11

このための QUnit テストを作成するにはどうすればよいですか。

function doSomethingWithAjax() {
    $.ajax({
        url: '/GetHelloWorld',
        success: function(data) { $("#responseFromServer").text(data); },
    });
}

Mockjax+qunit では、ajax の complete() メソッドで start() 呼び出しが必要です。

4

3 に答える 3

16
test("should mock ajax", function() {

    $.ajax = function(options) {
        equals(options.url, "/GetHelloWorld");
        options.success("Hello");
    };

    doSomethingWithAjax();

    equal($("#responseFromServer").text(), "Hello");
});
于 2012-02-22T18:11:47.593 に答える
1

jasmine-ajaxライブラリを使用すると、呼び出し自体に触れることなく、すべての ajax 呼び出しに対してモック応答を定義できます。

于 2012-02-21T20:03:35.577 に答える
0

この質問には数年かかり、jQuery と Jasmine の新しいバージョンでは少し変更されています。

jasmine-ajax を使用したくない場合は、Michael Falaga のアプローチを試すことができます

  function ajax_response(response) {
    var deferred = $.Deferred().resolve(response);
    return deferred.promise();
  }

  describe("Test test", function() {
    beforeEach(function() {
      spyOn($, 'ajax').and.returnValue(
        ajax_response([1, 2, 3])
      );
    });
    it("is it [1, 2, 3]", function() {
      var response;
      $.ajax('GET', 'some/url/i/fancy').done(function(data) {
        response = data;
      });
      expect(response).toEqual([1, 2, 3]);
    });
  });
于 2015-04-16T15:40:23.757 に答える