【发布时间】:2012-02-24 13:31:26
【问题描述】:
我们正在尝试为重 JS 的网络应用程序实现 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。 Check this link
标签: javascript unit-testing qunit