2016-08-30 3 views
1

サーバーからデータを取得するajax(非同期)GET呼び出しがあるjavascriptのクリックイベントハンドラをテストしたいとします。 私はdone()関数の中にすべてのビジネスロジックを持っています。ジャスミンテストケースを実行しているときにデバッグポインタを保持すると、done()ロジックにはまったく当てはまらないことがわかります。 ジャスミンでこれを処理する方法は?ジャスミンテストケース実行時に非同期呼び出しがヒットしない

$('#setup').click(function() { 

    $("div#spinner").addClass('spinner show'); 
    $.ajax({ 
     type: "GET", 
     url: "http://localhost:3000/setup.cgi", 
    }).done(function() { 
     $("div#divLoadingSpinner").removeClass('spinner show'); 
     $('#setup').attr('disabled', 'disabled'); 
    }); 

}); 

it("should disable clicking of Edit setup", function() { 
    setup = $("#setup"); 
    setup.click(); 
    console.log(">>" + setup[0].attributes.length); 
    expect(setup.attr('disabled')).toBeTruthy(); 
}); 

答えて

1

遅延オブジェクトを使用して、成功(完了)シナリオに当たるように解決できます。以下のサンプルを参照してください。正確である必要はなく、要件に応じて変更することができます。

spyOn($, 'ajax').and.callFake(function (request) { 
    var d = $.Deferred(); 
    d.resolve(put your expected data here); 
    return d.promise(); 
}); 
+0

ありがとうタイプ!!! 。私はこれを見つけました 。もう1つのことは、リクエストに基づいてレスポンスオブジェクトが変更されることです。これを達成する方法は? – JavaUser

+1

私はその問題に一度直面しました:)そのためには、その関数内の条件文を使用しました。すなわち、req == ならば解決するそれ以外の解決(または拒否) TypeScripter

+0

私は上記の関数でrequest.urlをチェックすると、常に '未定義'です。だから私はこれに基づいて決定を下すことができますか? – JavaUser

関連する問題