Jquery 茉莉花2号整合测试

Jquery 茉莉花2号整合测试,jquery,ajax,jasmine,Jquery,Ajax,Jasmine,我试图用jasmine 2.3.4测试一个真正的ajax请求,但我不知道如何处理ajax调用。我的代码类似于 describe("testing user-info calls", function() { it("should make a real AJAX request", function () { var callback = jasmine.createSpy(); $.ajax({ type: "GET",

我试图用jasmine 2.3.4测试一个真正的ajax请求,但我不知道如何处理ajax调用。我的代码类似于

describe("testing user-info calls", function() {
  it("should make a real AJAX request", function () {
    var callback = jasmine.createSpy();            
    $.ajax({
            type: "GET",
            url: "data/userinfo/username",
            async: false,
            success: callback
    });
    expect(callback).toHaveBeenCalledWith('Antonio');
  });
});
检查,它应该做你想要的

describe("testing user-info calls", function() {
  it("should make a real AJAX request", function (done) {
    $.ajax({
            type: "GET",
            url: "data/userinfo/username",
            async: false,
            success: function(arg) {
              expect(arg).toEqual('Antonio');
              done();
            });
    });
  });
});
或者,如果您实际上不需要点击服务器,您可以使用sinon.js使用fakeServer:

beforeEach(function() {
  server = sinon.fakeServer.create();
});

afterEach(function () {
  server.restore();
});

describe("testing user-info calls", function() {
  it("should make a real AJAX request", function () {
    server.respondWith("GET", "data/userinfo/username",
                       [200, { "Content-Type": "text" },
                        'Antonio']);
    var callback = jasmine.createSpy();            
    $.ajax({
            type: "GET",
            url: "data/userinfo/username",
            async: false,
            success: callback
    });
    server.respond();
    expect(callback).toHaveBeenCalledWith('Antonio');
  });
});

我在您的代码“预期spy unknown已被['Antonio']调用,但从未被调用”中遇到此错误。哪一组代码?我已经对第一部分进行了编辑,对测试做了一些修改,第二部分需要在规范运行程序中包含sinon.js。这是李斌,非常感谢你的回复。当我运行您的第一个代码块时,我得到了这个错误:超时-异步回调没有在jasmine.DEFAULT\u Timeout\u INTERVAL指定的超时内调用。我在一个基于剑道ui和SpringREST服务的单页应用程序中运行这些代码。我甚至尝试在beforeach块中插入ajax调用,但仍然不起作用:-嗯,您可以通过添加
jasmine.DEFAULT_timeout_INTERVAL=20000来增加超时
块之前的
中,其中
20000
是以毫秒为单位的时间。端点响应需要多长时间?网络选项卡上的13毫秒。但我有本地的一切