2017-02-03 3 views
0

moduleOne:Пропустить требует модуль для испытаний в 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, и тест не заканчивается.

Как предотвратить модульное требование модуля во время тестирования?

+0

Внутренний модульOne экспортирует, добавляет некоторый вариант, чтобы решить, хотите ли вы требовать модуль TwoTwo или нет. Затем, когда вам требуется moduleOne, вы передаете ему некоторые параметры – yBrodsky

ответ

1

Вы можете использовать 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, но это потребует изменения каждого места, где он используется.

Смежные вопросы