我正在使用mocha来运行使用node编写的测试.我的假设是我的每个测试都会彼此隔离.情况似乎并非如此.当您在测试目录上运行mocha时,它似乎将所有测试文件一起加载,然后执行每个测试套件.
当您在一个测试中使用模块时,这可能会破坏隔离,这可能会受到另一个测试中使用的模块的影响.
在这个Gist(失败的摩卡测试)中,我有两个模块(a和b)和两个测试(a-test和b-test).如果你在每次测试中独立运行Mocha,他们都会成功:
$ mocha --ui tdd a-test $ mocha --ui tdd b-test
但是,如果我一起运行这些测试,那么a-test就会失败:
$ mocha --ui tdd .
是否真的有必要为每个单独的测试运行mocha以获得适当的隔离?
注意:a-test失败的原因是触发了一个在b模块中调用单例的事件.这在b测试的正常执行中不会发生.由于a-test提供了完整的依赖关系(不包括b),我很惊讶地发现所有模块都加载到一个测试环境中.