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'上下文。谢谢!传播运营商也很好的提示。 –