Javascript 如何使用qunit测试spy参数是否是sinon.js spy中的特定函数
如何在sinon.js的间谍函数中测试匿名函数是否作为参数传递? 想象一个这样的函数Javascript 如何使用qunit测试spy参数是否是sinon.js spy中的特定函数,javascript,qunit,sinon,spy,Javascript,Qunit,Sinon,Spy,如何在sinon.js的间谍函数中测试匿名函数是否作为参数传递? 想象一个这样的函数 function myFunction(){ //do stuff otherobj.anotherFunc({myobj: 'value'}, function(){ console.log('test'); }); } 我在我的测试设置中为otherobj.anotherFunc创建了一个spy,可以很容易地测试是否使用第一个参数(js对象)调用了我的spy 但是当我尝试测试第二个参数,回
function myFunction(){
//do stuff
otherobj.anotherFunc({myobj: 'value'}, function(){ console.log('test'); });
}
我在我的测试设置中为otherobj.anotherFunc创建了一个spy,可以很容易地测试是否使用第一个参数(js对象)调用了我的spy
但是当我尝试测试第二个参数,回调是否等于另一个函数时,我遇到了一些问题
ok(myDependencySpy.called, "dependency was called!"); //this is OK!
deepEqual(myDependencySpy.args[0][0], {myobj: 'value'}); //this is OK!
deepEqual(myDependencySpy.args[0][1], function(){ console.log('test'); }); //this FAIL =[
有没有办法测试这一点?可能的重复看看这一点,您是否真的试图测试函数代码是否与您期望的完全相同?对我来说,这似乎是一个非常脆弱的考验。我建议您最关心的是在适当的时候正确调用函数,等等@Jan您提供的链接中的信息对我来说非常有价值(谢谢=])。但我认为情况并非如此。他们试图测试两个对象之间的相等性,而我试图比较两个函数,好吧,至少,我试图比较匿名函数!啊,好吧,他们正在测试构造器。。。但我同意@GregL,您真正应该测试的是它在正确的时间被调用和/或执行正确的操作。@GregL,实际上我正在尝试测试预期的回调函数是否作为参数传递给另一个回调函数。我调用的依赖关系是我的代码外部的,实际上是chrome.storage api中的一个函数。所以我的选择是测试我是否调用该依赖项,并使用间谍使用正确的参数。