Я пытаюсь проверить, вызван ли какой-либо конкретный метод при определенных условиях, используя мокко, chai и sinon. Вот код:Тестирование вызовов методов с использованием метода sinon on module.exports
function foo(in, opt) {
if(opt) { bar(); }
else { foobar(); }
}
function bar() {...}
function foobar() {...}
module.exports = {
foo: foo,
bar: bar,
foobar:foobar
};
Вот код в моем тестовом файле:
var x = require('./foo'),
sinon = require('sinon'),
chai = require('chai'),
expect = chai.expect,
should = chai.should(),
assert = require('assert');
describe('test 1', function() {
it('should call bar', function() {
var spy = sinon. spy(x.bar);
x.foo('bla', true);
spy.called.should.be.true;
});
});
Когда я делаю console.log на шпиона он говорит, что это не называлось даже ты с ручной рубки в методе бара я могу видеть, как он вызван. Любые предложения о том, что я могу сделать неправильно или как это сделать?
Благодаря
необходима Другая модификация, необходимо определить все методы в module.exports и ссылаться на них оттуда, предваряя их с модулем. экспорт. Как только это будет сделано, тесты пройдут с использованием метода, который вы показали. Еще раз спасибо! –
Привет, @ ToniKostelac, через год я столкнулся с той же проблемой. К сожалению, я не могу внести изменения в работу Мадары. Методы уже определены в файле module.exports файла для проверки, нужно ли их определять и в другом месте? и где нужны ссылки? Не могли бы вы написать образец кода, чтобы показать мне? – Noneu
@ Ничего извините за поздний ответ, я давно не был здесь в сети, но, надеюсь, вам удалось это понять. В основном это связано с любыми «частными» методами, которые я использовал внутри своих модулей. Поскольку они не были определены в экспорте, я не мог использовать шпиона на них. –