【发布时间】:2014-12-23 09:55:38
【问题描述】:
我目前正在尝试使用 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 (evalating 'spyOn($, "ajax").andCallFake(function(options)
任何帮助都是灰色的
【问题讨论】:
标签: javascript jquery ajax unit-testing jasmine