Come visto in questo jsFiddle, ho una funzione 'init' che configura un pulsante in modo che quando viene cliccato apre una finestra di dialogo di avanzamento ed emette una chiamata Ajax. Voglio unit test questo codice JavaScript (usando QUnit), e verificare i seguenti casi:Come posso testare questa funzione JavaScript, incluso il mocking della chiamata Ajax?
- Ajax chiamata riesce
- Ajax chiamata non riesce
ho bisogno di prendere in giro fuori almeno la chiamata Ajax e la chiamata a window.open
e altre chiamate sono sicuro, a seconda dell'implementazione del test dell'unità.
Come posso scrivere i test di unità QUnit per il mio codice che testa questi due scenari?
EDIT: Il codice che deve essere testato:
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
};
}());
consideri mockjax per beffardo la chiamata ajax, funziona come un fascino – rsplak
@rsplak La prego di mostrare come eseguire i test dopo i callback Ajax sono state invocate? Non riesco a vedere come, al momento. – aknuds1