[英]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.