【问题标题】:Jquery ajax load of JSON in unit tests单元测试中 JSON 的 Jquery ajax 负载
【发布时间】:2011-01-11 16:35:02
【问题描述】:

我正在尝试在 jasmine 中加载数据集以进行此类测试... 然而,由于它是一个 json 调用,我似乎无法总是得到由“it”表示的测试,以等待 JSON 调用完成后再使用它的数组。我尝试使用 ajaxStop 函数无济于事。有什么想法吗?

describe("simple checks", function() {

  var exampleArray = new Array();   

beforeEach(function(){

    $(document).ajaxStop(function() {
        $(this).unbind("ajaxStop");

        $.getJSON('/jasmine/obj.json', function(data) {

         $.each( json.jsonattr, function(i, widgetElement) {                     
            exampleArray.push(new widget(widgetElement));
            });
          });
       });

});


  it("use the exampleArray", function() {

    doSomething(exampleArray[0]); // frequently this is coming up as undefined

 });

【问题讨论】:

    标签: jquery unit-testing json synchronous jasmine


    【解决方案1】:

    您可以使用 $.ajax() 并在参数中将 async 设置为 false,而不是使用 $.getJSON,然后使用 .parseJSON() 解析 JSON:

    $.ajax({ url: '/jasmine/obj.json', 异步:假, 数据类型:'json', 成功:函数(数据){ var jsonvar = $.parseJSON(data); //你的代码在这里! } });

    我会警告你,如果调用需要很长时间,将 async 设置为 false 可能会导致浏览器显示冻结,但它会阻止任何其他 JavaScript 或 jQuery 代码执行,直到调用完成并加载数据(假设调用成功)。

    【讨论】:

    • jqueryrocks 你肯定会为你做摇滚 merci beaucoup!
    猜你喜欢
    • 2014-12-16
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    • 2019-01-19
    • 2015-01-05
    • 1970-01-01
    • 1970-01-01
    • 2011-12-31
    相关资源
    最近更新 更多