3
在javascript中(ES6),我有一個公用模塊,它只是包含了一些功能,然後在文件的結尾,我導出它們像這樣:如何興農間諜模塊輸出的實用功能
module.exports = {
someFunction1,
someFunction2,
someFunction3,
}
然後我想爲這些函數編寫單元測試。一些功能相互依賴;他們以某種方式互相呼叫,例如,某個功能1可能會調用某個功能2。沒有循環問題。
一切運作良好,直到我需要窺探其中一個函數被調用。我該怎麼做?目前我正在使用Chai和Sinon。
在測試文件,我已導入整個文件作爲一個模塊:
const wholeModule = require('path/to/the/js/file')
最後,我的測試看起來如下:
it('should call the someFunction2', (done) => {
const spy = sinon.spy(wholeModule, 'someFunction2')
wholeModule.someFunction1() // someFunction2 is called inside someFunction1
assert(spy.calledOnce, 'someFunction2 should be called once')
done()
})
的問題是,測試失敗,因爲在某些函數1中,someFunction2函數被直接使用。我將間諜應用到模塊對象的功能。但這是一個不同的對象。這裏的someFunction1的例子:
function someFunction1() {
someFunction2()
return 2;
}
我知道爲什麼它不會工作的原因,但我不知道什麼是在這種情況下,最好的做法,使其工作?請幫忙!
不錯的嘗試,但沒有工作= /。它清楚地稱爲假功能。但是當我斷言間諜被調用時,它不叫 –
@ VilleMiekk-oja您是否在編輯後嘗試解決方案? –
是的,結果沒有區別 –