2011-01-11 7 views
1

私はジャスミンのようなテストのためにデータセットをロードしようとしています... しかし、そのjsonコールとして私は傾けるように見えるいつもによって示されるテストを得る配列を使用する前にJSON呼び出しが終了するまで待つ必要があります。私は無駄にajaxStop関数を使用してみました。何か案は ?代わりに$ .getJSONを使用してのユニットテストでJSONのJavery ajaxのロード

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 

}); 

答えて

3

、あなたは$アヤックス()とあなたのパラメータのfalseに非同期(async)設定を使用することができ、その後、.parseJSON()を使用してJSONをパース:

 
$.ajax({ 
    url: '/jasmine/obj.json', 
    async: false, 
    dataType: 'json', 
    success: function(data) { 
     var jsonvar = $.parseJSON(data); 
     //your code here! 

    } 
}); 

私がしますasyncをfalseに設定すると、呼び出しに時間がかかるとブラウザがフリーズすることがありますが、呼び出しが完了してデータがロードされるまで他のJavaScriptやjQueryコードが実行されないように警告します(呼び出しが成功)。

+0

jqueryrocks最も確かにロックmerci beaucoupをあなたに! – wmitchell

関連する問題