0
爲什麼我不能斷言茉莉間諜當實現使用apply
而不是正常的函數調用?解決方法是不要使用apply
,但如果第三方方法的簽名被更改,則很容易出錯。茉莉花模擬失敗與`應用`,但與正常函數調用確定
以下代碼示例僅用於演示目的而被簡化,並且使用ES6語法編寫。
用下面的測試:
describe("foo", function(){}
it("calls bar", function(){
spyOn(thirdparty, "bar");
foobar.foo("foo", "bar");
expect(thirdparty.bar).toHaveBeenCalledWith("foo", "bar");
});
);
下面的代碼失敗:
foo(){
thirdparty.bar.apply(arguments);
}
但下面的代碼傳遞:
foo(foo, bar){
thirdparty.bar(foo, bar);
}
上述溶液是容易出錯,如果爲例如bar
的執行由此變爲:
bar(foo, bar){
// NOOP
}
爲了這樣的事情:
bar(foo, options = { bar: 'bar' }) {
// NOOP
}
任何人都願意分享一些見解?
OMG,我忘記了第一個參數的'this'上下文。謝謝!傳播運營商也很好的提示。 –