2015-12-24 24 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(); 
}); 

或者类似的东西,这将有助于。

相关问题