moduleOne:

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添加一些选项,但是这将需要更改使用它的每个位置。

关于javascript - 跳过需要Node.js中的模块进行测试的步骤,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42024803/

10-11 12:18