2016-06-09 48 views
1

我有一種方法,我輸入一個解構方法。我試圖監視這種方法,但仍然遇到錯誤。間接解構要求方法

const { addition } = require('./my-math-lib'); 

const additionSpy = sinon.spy(addition); 

testMethod.doMath(); 

expect(additionSpy.calledOnce).to.be.equal(true); 

不幸的是,這個單元測試不起作用。乳清我看着additionSpy對象,我看到notCalled是真的。

如果我改變代碼 -

const mathStuff = require('./my-math-lib'); 

const additionSpy = sinon.spy(mathStuff, 'addition'); 

testMethod.doMath(); 

expect(additionSpy.calledOnce).to.be.equal(true); 

這個單元測試將通過。

回答

2

Sinon的間諜方法不能修改函數。函數在Javascript中不可變。 Sinon的間諜方法可以創建一個新函數(第一個例子中的additionSpy),或者它可以修改一個對象並替換它上面的一個方法(第二個例子)。你的第二個例子看起來是正確的,你想要做什麼。

+0

感謝和第二個例子的作品。我真的很想在我的require調用中使用解構。 – VtoCorleone