Я пытаюсь использовать mockjax, чтобы высмеивать мои вызовы jQuery Ajax; однако я не могу найти ни одного хорошего, рабочего примера того, как эффективно проверить ответы.
Следующий код представляет собой простую оболочку для объекта jQuery.Ajax. Это работает, но я хочу написать несколько тестов:
Ajax Wrapper
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));
У меня есть следующий тест JsTestDriver для getData.
Тестовый класс
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"
, и оно все равно не "провалило" тест.
Как мне настроить этот тест, чтобы гарантировать, что ложный ответ будет возвращен, чтобы я не получил ложный положительный результат, который у меня есть в настоящее время?