2

jquery.mockjax.js を使用して応答をモックしている基本的な jQuery ajax 呼び出しがあります。

$(document).ready(function() {        
    $("button.ajax").on("click", getAjaxResult);
});

function getAjaxResult() {
    $.getJSON("/restful/get", function(response) {
      if ( response.status == "success") {
        $("p.ajax_result").html( response.result );
      } else {
        $("p.ajax_result").html( "There is a problem, cannot ajax get." );
      }
    });
}

jquery.mockjax.js スタブ:

$.mockjax({
  url: "/restful/get",
  responseText: {
    status: "success",
    result: "Your ajax was successful."
  }
});

同時に、イベントがトリガーされたとき、ajax と結果が成功したことをテストする Jasmine 記述ブロックを作成しようとしています。

it("ajax result should be shown after the button is clicked", function() {
    spyEvent = spyOnEvent("button.ajax", "click");
    $("button.ajax").trigger("click");

    expect("click").toHaveBeenTriggeredOn("button.ajax");
    expect(spyEvent).toHaveBeenTriggered();
    getAjaxResult();

    expect($("p.ajax_result")).toHaveText("Your ajax was successful.");
});

テストを実行すると、常に失敗します。ajaxが完了する前にexpect()が実行されたと思いますか?

それを機能させるためにリファクタリングする方法について何か考えはありますか?

4

1 に答える 1