jQuery ajax in of json of json in in unit tests
-
09-10-2019 - |
質問
私はそのようなテストのためにジャスミンにデータセットをロードしようとしています... いつも 「IT」で示されたテストを取得して、Arrayを使用する前に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
});
解決
$ .getjsonを使用する代わりに、$ .ajax()を使用し、パラメーターでasyncをfalseに設定し、.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コードが通話が終了してデータがロードされるまで実行されないようにします(通話の想定成功です)。
所属していません StackOverflow