QUnit:如何在不修改Ajax调用
问题描述:
我如何写一个QUnit测试本次测试Ajax调用:QUnit:如何在不修改Ajax调用
function doSomethingWithAjax() {
$.ajax({
url: '/GetHelloWorld',
success: function(data) { $("#responseFromServer").text(data); },
});
}
Mockjax + qunit需要在阿贾克斯开始()调用完成()方法。
答
test("should mock ajax", function() {
$.ajax = function(options) {
equals(options.url, "/GetHelloWorld");
options.success("Hello");
};
doSomethingWithAjax();
equal($("#responseFromServer").text(), "Hello");
});
答
这个问题有几年了,对于jQuery和Jasmine的新版本已经改变了一下。
如果你不想使用茉莉花AJAX可以尝试Michael Falaga's approach
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]);
});
});
你能分享的解决方案,以使用茉莉阿贾克斯的OP的问题吗? – 2014-01-27 17:23:28