gpt4 book ai didi

javascript - 使用 jasmine 模拟 ajax 请求

转载 作者:行者123 更新时间:2023-12-02 16:39:34 25 4
gpt4 key购买 nike

我目前正在尝试使用 jasmine 测试我的 javascript 代码。到目前为止,我需要模拟 ajax 请求,一切都还好。我目前使用 jasmine 1.2 和mock-ajax.js 我的代码如下:

我有一个 handler.js 文件,它基本上包含许多 ajax 请求。我正在使用 require.js 来读取具有相关 url 的配置 js 文件。

define(['urlConfig'], function (urlConfig) {
return {
getAllCustomers: function () {
return $.ajax({
url: config.url,
dataType: 'json',
xhrFields: {
withCredentials: true
},
});
}
}

所以基本上我现在已经创建了一个规范来测试 ajax 请求是否确实被命中。

define(["/../dependencies/squire.js"], function(Squire) {
var injector;

beforeEach(function() {
injector = new Squire();
jasmine.Ajax.install();
});

describe("handler", function() {
var mockData = {
data: [
{
reference: "ref1",
name: "bob"
},
{
reference: "ref2",
name: "fred"
}
]
}


function loadModule() {
mockHandler();
}


function mockHandler() {
injector.mock('handlers/Handler', {
getAllCustomers: function() {
return {
then: function(callback) {
callback(mockData);
}
}
}
});
};

describe("get all customers", function() {
beforeEach(function() {
loadModule();

});

it('expect to get all account details on request', function() {
spyOn($, "ajax").andCallFake(function(options) {
options.success();
});

var callback = jasmine.createSpy();

mockHandler().getCustomerDetails(callback);
expect(callback).toHaveBeenCalled();
});
});
});
});

不确定上述内容是否正确,但也收到错误消息 TypeError: 'undefined' is not a function (evaluating 'spyOn($, "ajax").andCallFake(function(options)

任何帮助都是灰色的

最佳答案

在 Jasmine 2.0 版本中,函数 .andCallFaketo() 更改为 .and.callFake()。就像这个例子:

spyOn().and.callFake(function() {
return 1001;
});

关于javascript - 使用 jasmine 模拟 ajax 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27617957/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com