Внутри модульного теста Я хочу проверить, звонит ли SUT require
с определенным параметром. В основном мой SUT небольшой модуль со следующей реализацией:Шпион по требованию в Node.js
module.exports = function() {
require('foo');
};
теперь я хочу написать тест, как это:
var sut = require('./sut');
it('requires foo.', function() {
sut();
expect(???);
});
Таким образом, вопрос: Как я могу проверить, является ли require
была вызвана с правильные параметры? Я попробовал это с помощью шпиона Sinon.js:
var spy = sinon.spy(require);
sut();
expect(spy.callCount).to.be.equal(1);
expect(spy.calledWithExactly('foo')).to.be(true);
require.restore();
Но это не работает. Когда я запускаю мой тест, мокко говорит мне:
Error: expected 0 to equal 1
Что я делаю не так, и как я могу это исправить?
PS: Мне не нужен для работы с Sinon.js, поэтому, если другой модуль лучше подходит для моего дела, все остальное в порядке.
proxyquire было бы здорово, если бы я хотел его в течение всего времени, - но мне просто нужно это для одного теста. С proxyquire у меня нет возможности переконфигурировать это для каждого теста, к сожалению. Итак, следовательно: Хороший намек, но не соответствующий моему сценарию. –