在 Node.js 中跳过要求模块进行测试的步骤
Skip requiring a module for tests in Node.js
模块一:
const moduleTwo = require('moduleTwo'); //moduleTwo opens Websocket
module.exports = {
functionToTest: () => 1
}
现在我想测试那个功能 - test.js:
const tap = require('tap');
const moduleOne = require('moduleOne');
tap.equal(moduleOne.functionToTest(),1);
问题是,在 moduleTwo 中,一些代码 运行 打开了一个 websocket,但测试没有完成。
如何防止 moduleOne 在测试时需要 moduleTwo?
您可以使用 mock-require:
const tap = require('tap');
mock('moduleTwo', {
// export whatever you need, just don't open websockets
});
// now moduleOne will require your mock instead of real moduleTwo
const moduleOne = require('moduleOne');
tap.equal(moduleOne.functionToTest(),1);
或者您可以向 moduleTwo
添加一些选项,但它需要更改每个使用它的地方。
模块一:
const moduleTwo = require('moduleTwo'); //moduleTwo opens Websocket
module.exports = {
functionToTest: () => 1
}
现在我想测试那个功能 - test.js:
const tap = require('tap');
const moduleOne = require('moduleOne');
tap.equal(moduleOne.functionToTest(),1);
问题是,在 moduleTwo 中,一些代码 运行 打开了一个 websocket,但测试没有完成。
如何防止 moduleOne 在测试时需要 moduleTwo?
您可以使用 mock-require:
const tap = require('tap');
mock('moduleTwo', {
// export whatever you need, just don't open websockets
});
// now moduleOne will require your mock instead of real moduleTwo
const moduleOne = require('moduleOne');
tap.equal(moduleOne.functionToTest(),1);
或者您可以向 moduleTwo
添加一些选项,但它需要更改每个使用它的地方。