在 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 添加一些选项,但它需要更改每个使用它的地方。