jQuery技术:无法在Jasmineunit testing中窥探ajax的交错成功回调

在源代码中,我有一个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

      (0)
      上一篇 2021年12月12日
      下一篇 2021年12月12日

      精彩推荐