我们正在尝试为一个JS重度的Web应用实现QUnit JavaScript测试。我们正在努力找到一种成功测试涉及jQuery AJAX请求的方法。例如,我们有以下构造函数(显然这只是一个非常简单的例子):
var X = function() {
this.fire = function() {
$.ajax("someURL.php", {
data: {
userId: "james"
},
dataType: "json",
success: function(data) {
//Do stuff
}
});
};
};
var myX = new X();
myX.fire();
我们正在寻找一种测试
fire
方法的方法,最好使用存根URL而不是真正的someURL.php
。目前我唯一明显的解决方案是将URL和success
回调作为构造函数的参数添加。这样,在测试中,我们可以创建一个新的X
实例,并传入存根URL和当存根返回响应时要运行的回调。例如:test("Test AJAX function", function() {
stop();
var myX = new X();
//Call the AJAX function, passing in the stub URL and success callback
myX.fire("stub.php", function(data) {
console.log(data);
start();
});
});
然而,这似乎不是一个很好的解决方案。有更好的方法吗?
jQuery spy
。我已经创建了一种更简单的方式,可以使用 jQuery 熟悉的语法来测试 ajax。查看此链接。 - steve