2015-12-24 80 views
5

我正在使用摩卡來運行使用節點編寫的測試。我的假設是,我的每個測試都會彼此隔離。這似乎並非如此。在測試目錄上運行mocha時,它似乎將所有測試文件加載在一起,然後執行每個測試套件。我如何獲得摩卡獨立運行測試?

當你在一個測試中使用的模塊,可以通過在其他測試中使用的模塊的影響這會破壞隔離。

在該要點(Failing Mocha Test)我有兩個模塊(a和b)和兩個測試(一個測試和b檢驗)。如果您在每個測試獨立運行摩卡他們都成功:

$ mocha --ui tdd a-test 
$ mocha --ui tdd b-test 

但是,如果我運行這些測試一起,在一個測試失敗:

$ mocha --ui tdd . 

真的有必要爲每個運行摩卡個別測試以獲得適當的隔離?

注:一個測試失敗是原因觸發調用B模塊在一個單獨的事件。這在b測試的正常執行中不會發生。由於a測試提供了一套完整的依賴關係(不包括b),我驚訝地發現所有模塊都被加載到單個測試環境中。

回答

2

如果在單個命令中一起運行所有規格,它會將所有模塊加載到單個測試環境中。

辛格爾頓圖紋一般很難測試,如果你沒有代碼重置單個實例或創建一個新的人會在需要時。

所以,你可能應該重構你的代碼。 在a.js添加復位功能復位targets = [];

然後將它添加到b-test.js

suiteSetup("B", function(){ 
    a.reset(); 
}); 

或者類似的東西,這將有助於。

相關問題