我正在尝试使用 mockjax 来模拟我的 jQuery Ajax 调用;但是,我找不到任何关于如何有效测试响应的好的、有效的示例。
以下代码是 jQuery.Ajax 对象的简单包装器。它有效,但我想围绕以下内容编写一些测试:
Ajax 包装器
if (!namespace){
var namespace = {};
}
namespace.Ajax = (function($){
function defaultError(xhr, err, msg){
if (typeof console !== 'undefined'){
var log = console.error;
if (!log) {
log = console.log;
}
log("==========================================");
log("An error occurred with the request.");
log("- Status Code: " + xhr.status);
log("- Status Text: " + xhr.statusText);
log("- Response Text: " + xhr.responseText);
log("- Message: " + msg);
log("==========================================");
}
}
function getData(url, data, successCallback, errorCallback){
if (!errorCallback){
errorCallback = defaultError;
}
$.ajax({
url: url
, data: data
, success: successCallback
, error: errorCallback
});
}
function postData(url, data, successCallback, errorCallback){
if (!errorCallback){
errorCallback = defaultLog;
}
$.ajax({
type: "POST"
, url: url
, data: data
, success: successCallback
, error: errorCallback
});
}
return {
getData : getData
, postData: postData
}
}(jQuery));
我对 getData 进行了以下 JsTestDriver 测试。
测试班
TestCase("Ajax Object Test Fixture", {
"test Calling getData Should Return content" : function(){
var results;
var obj = namespace.Ajax;
$.mockjax({
url: "/test"
, responseTime: 1
, responseText: "success"
});
obj.getData("/test"
, null
, function(data){results = data; });
setTimeout(function(){assertEquals("'success' Should be Returned.", "success1", results);}, 500);
}
});
在此示例中,assertEquals 函数应返回 false,因为我期待“success1”,但在整个代码中,我尝试将值设置为“success”。我希望这个测试失败,所以我知道它正在工作。尽管如此,测试成功了。我有事件试图将 successCallback 函数设置为只是results = "success"
,它仍然没有“失败”测试。
如何设置此测试以确保返回模拟响应,这样我就不会得到目前的误报?