我有多個使用共享基礎文件(稱爲testBase.js)的Mocha測試文件。它負責建立所有的存根和間諜。具有多個摩卡測試文件的Sinon
如果我運行通過摩卡個人文件中的所有測試用例通過但當它貫穿摩卡測試* .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
我不知道爲什麼它調用兩次,它的問題的根本原因。一次摩卡測試時,BefireEach不能撥打兩次電話。
是否在導入多個文件之前調用兩次?有人可以提出任何可能的解決方案嗎?我也嘗試sinon.sandbox
,但它不起作用
是'beforeEach'和'afterEach'位於* testBase *文件的根目錄?或者他們被封裝在一個函數中並以某種方式導出?請提供更多信息。 – vsenko
這兩個函數都位於基本文件中,它們在testInit函數中,然後導出到測試用例 –
您需要導出純函數 - 未包含beforeEach和afterEach。然後將它們傳遞到beforeEach和afterEach中的每個文件的描述塊中。否則,你會有錯誤,因爲它們都適用於外部(全局)範圍。我在我的答案的底部描述了這一點 – oligofren