我怎样才能得到摩卡独立运行我的testing?
我正在使用摩卡来运行使用节点编写的testing。 我的假设是,我的每个testing都会被隔离开来。 这似乎并非如此。 在testing目录上运行mocha时,它似乎将所有testing文件加载在一起,然后执行每个testing套件。
当一个testing中使用模块时,这可能会中断隔离,这可能会受到另一个testing中使用的模块的影响。
在这个Gist( 失败的摩卡testing )中,我有两个模块(a和b)和两个testing(atesting和btesting)。 如果你在每次testing中独立运行摩卡,他们都会成功:
$ mocha --ui tdd a-test $ mocha --ui tdd b-test
但是,如果我一起运行这些testing,atesting失败:
$ mocha --ui tdd .
是否真的有必要为每个单独的testing运行摩卡以得到适当的隔离?
注意:atesting失败的原因是在b模块中触发一个调用单例的事件。 这在b检验的正常执行中不会发生。 由于atesting提供了一套完整的依赖关系(不包括b),所以我惊讶地发现所有的模块都被加载到一个testing环境中。
如果在一个命令中一起运行所有的规格,它将把所有的模块加载到一个testing环境中。
如果没有代码来重置单例实例或者在需要的时候创build一个新的实例,那么单例模式通常很难testing。
所以,你可能应该重构你的代码。 在a.js
添加一个重置函数来重置targets = [];
然后将其添加到b-test.js
suiteSetup("B", function(){ a.reset(); });
或者类似的东西会有所帮助。
- 节点/ vue.jsunit testing的承诺,如何正确写入?
- 如何在摩卡testing中模拟无连接
- Observable的简单testing结果与柴和摩卡nodejs
- 在Mocha&Sinon的NodeJS中testing诺言callback
- 如何在node.js + Express.js + mongodb应用程序上asynchronous启动摩卡testing
- nodejs中的selenium-webdriver不返回当前标题
- 用摩卡expressiontesting:基于承诺的testing不会自行运行?
- 运行摩卡咕噜声 – 当testing失败时放弃
- Babel不会忽略我的模块的正则expression式