【发布时间】:2014-10-19 04:11:31
【问题描述】:
我有一个lib.js,我将需要它并在 2 个测试中进行测试,test1.js 和 test2.js(使用 mocha 和 should.js):
lib.js 只是导出一个数据对象:
module.exports.data = {};
test1.js 看起来像这样:
var data = require('./lib.js').data;
describe('.data', function() {
it('should be able to add data', function() {
data.entry = 'random data';
console.log(data); // expecting to get `{ entry: 'random data' }`
})
})
而test2.js 看起来像这样:
var data = require('./lib.js').data;
describe('.data', function() {
it('should have empty data', function() {
console.log(data); // expecting to get `{}`
})
})
如果我使用多个文件运行 mocha,例如 mocha test1.js test2.js,两者都会打印 { entry: 'random data' },并且不希望同时运行测试与单独运行它们得到不同的结果。
我相信这是因为节点缓存了模块,我可以在离开测试之前恢复模块。但是,由于这种行为在编写测试时可能很容易发生,我想知道正确的策略是什么。也许我可以在摩卡级别上做些什么?非常感谢!
【问题讨论】:
-
谢谢,@Louis。这很有帮助。我想我的问题是多个测试文件。理想情况下,我应该能够进行自己的测试,而不必担心其他人的测试。并且删除所有缓存以防止我自己的测试污染其他测试中需要的模块似乎有点乏味。我希望他们独立,即使他们一起运行。或者也许我必须使用rewire 之类的东西并让它为我处理?谢谢!
标签: javascript node.js testing mocha.js require