簡體   English   中英

賽諾擁有多個摩卡測試文件

[英]Sinon with multiple mocha test files

我有一個使用稱為testBase.js的共享基礎文件的多個Mocha測試文件。 它負責設置所有存根和間諜。

如果我通過mocha運行單個文件,則所有測試用例都通過,但是當它通過mocha * .js運行測試時,測試用例開始失敗並引發錯誤

TypeError: Attempted to wrap send which is already wrapped

這是我的beforeEach和afterEach塊

beforeEach(function (done) {
    context.alexaSpy = sinon.spy(alexa, "send");
}

beforeEach(function (done) {
    context.alexaSpy.restore();
}

我實際上在兩個塊中都打印了日志,並且發現了一件奇怪的事。 我這樣看日志

-- BeforeEach Fired Test1
-- BeforeEach Fired Test1
-- AfterEach Fired Test1
-- AfterEach Fired Test1

我不知道為什么它打電話兩次,這是問題的根本原因。 Befire每個人不得兩次要求進行一次摩卡咖啡測試。

導入多個文件是否在beforeEach中調用兩次? 有人可以提出任何可能的解決方案嗎? 我也嘗試過sinon.sandbox但是它不起作用

我們需要確定基本文件中的要求。

我的猜測僅僅是,您需要多個文件中的文件,並且每次執行此操作時,都會添加設置和拆卸功能。 發生這種情況是因為所有測試共享相同的外部范圍。 要求基本文件十次也將添加beforeEach十次。

正確的方法是使用sinon.sandbox或sinon-test。 避免一個測試干擾下一個測試要容易得多。

但是無論您做什么,都需要導出函數並在每個文件的beforeEach中運行它

通常像這樣

const base = require('./base')

describe('module one', ()=> {
    beforeEach(base.commonStubs);

    it('should.... ',..);
 })

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM