在這個jsFiddle中可以看到,我有一個函數'init'來配置一個按鈕,當點擊它時會打開一個進度對話框併發出一個Ajax調用。我想單元測試(使用QUnit)這段JavaScript代碼,並檢查以下情況:我該如何測試這個JavaScript函數,包括模擬Ajax調用?
- Ajax調用成功
我需要模擬出至少Ajax調用
window.open
,其他調用我確定,取決於單元測試的實現。 如何爲測試這兩種方案的代碼編寫QUnit單元測試?
編輯:需要進行測試的代碼:
所有,下載的var statusmod = (function() {
var spinner = $("#spinner");
var init = function(id) {
var progressDialog = $("#progressdialog-content").dialog({
autoOpen: false,
title: "Launching Status Page"
});
var errorDialog = $("#errordialog-content").dialog({
autoOpen: false,
modal: true,
buttons: {
"OK": function() {
$(this).dialog("close");
}
}
});
var btn = $("#button-status");
btn.button().click(function() {
spinner.show();
progressDialog.dialog("open");
var url = $.validator.format("/api/binid/?id={0}", id);
// Call Web service to get binary ID
$.ajax({
url: url,
dataType: "json"
}).done(function(data) {
window.open($.validator.format("http://status/?Page=Status&Id={0}", data.Id), target = "_newtab");
}).fail(function(jqXHR, msg, errorThrown) {
errorDialog.dialog("open");
}).always(function() {
progressDialog.dialog("close");
});
return false;
});
};
return {
init: init,
_spinner: spinner
};
}());
考慮的嘲諷Ajax調用mockjax,就像一個魅力 – rsplak
@rsplak能否請你展示如何運行測試Ajax的回調已被調用後?目前看不到如何。 – aknuds1