在源代码中,我有一个getJSON调用,在以下结构中有两个成功回调。
要测试的源代码:
jsonMakeLineOrderData = $.getJSON(url, jsonData, function (data) { console.log("Inside 1st callback"); //… some other statement }).success(function (data) { // line# 1 console.log("Inside 2nd callback"); //… some other statement });
我正在使用Jasmine测试框架来测试此调用的成功块。
假冒/模拟ajax调用我使用了spyOn实用程序。
我的Jasmine测试规范:
it ("Test Function",function(){ var data = ; var d; spyOn($, "ajax").andCallFake(function(params) { params.success(data); // line# 2 d = $.Deferred(); d.resolve(data); return d.always(); }); });
在上面的例子中,我能够测试第一个回调,但无法测试第二个回调。
由于测试规范中的第2行,第一个回调正在执行。
我已经尝试使用jQuery延迟实例来执行第二个回调但它抛出“TypeError:$ .getJSON(…)。success is not a function” error,如果我将.success()语句更改为.done( )在第1行的源文件中,测试用例工作正常,但我无法使用.success() ,遗憾的是我不想更改源文件,所以我必须使用.success () 。
如果有人有任何解决方案,请告诉我。
提前致谢。
你必须返回一个函数来调用这样的回调:
it ("Test Function",function(){ var data = ; spyOn($, "getJSON").andReturn({success: function(c){c(data)}}); });
为了更容易的ajax测试,我会建议sinonJS ,它有一个简单的方法来模拟ajax与假服务器 。
需要了解更多jQuery教程分享无法在Jasmineunit testing中窥探ajax的交错成功回调,都可以关注jQuery技术分享栏目—计算机技术网(www.ctvol.com)!
以上就是jQuery教程分享无法在Jasmineunit testing中窥探ajax的交错成功回调相关内容,想了解更多jQuery开发(异常处理)及jQuery教程关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/jquerytutorial/981189.html