4
我試圖在給定使用摩卡,柴和sinon的條件時調用某個特定的方法。下面是代碼:在module.exports方法上使用sinon進行方法調用的測試
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,一年後,我面臨同樣的問題。不幸的是,我沒有得到你的修改,使Madara的解決方案工作。這些方法已經定義在要測試的文件的module.exports中,它們是否也必須在其他地方定義?並且需要哪些參考?你能寫一個代碼示例來展示我嗎? – Noneu
@Noneu對於遲到的回覆感到抱歉,我在這裏沒有上網了很長一段時間,但希望你已經設法弄清楚了這一點。基本上這與我在模塊中使用的任何「私有」方法有關。由於他們沒有在出口中定義,我不能對他們使用間諜。 –