1

有没有办法告诉测试框架(nodeunit、mocha、应该)为每个测试重新加载“必需”模块?

我对我的模块进行了多次测试,我发现由于 Node 的模块系统在第一次缓存模块时require(),后续的测试运行会遇到同一个对象(使用它的旧状态,包括注入的模拟对象,这些对象不再适用于下一个测试套房。)

所以发生的事情是 TDD 促使我创建了一个模块,例如:

// my module
module.exports = function(dep1, dep2) {
    // code goes here, makes use of dep1/dep2
}

我的第一个测试为 dep1 注入了一个模拟;下一个测试为 dep2 注入一个模拟。但是由于require()总是返回我模块的相同实例,第二个测试的模拟永远不会被正确注入。测试都在同一个被测对象上运行,这很糟糕。

一种解决方案是重新设计模块以支持“新”,并每次返回一个新实例。在我走这条路之前,有没有办法强制模块在测试环境中重新加载?

4

0 回答 0