Como se ve en este jsFiddle, tengo una función 'init' que configura un botón para que al hacer clic se abre un diálogo de progreso y emite una llamada Ajax. Quiero unidad de prueba este código JavaScript (usando QUnit), y comprobar los siguientes casos:¿Cómo pruebo la unidad de esta función de JavaScript, incluida la burla de la llamada Ajax?
- Ajax llamada se realiza correctamente
- Ajax llamada falla
necesito para burlarse a cabo al menos la llamada Ajax y la llamada al window.open
, y otras llamadas estoy seguro, dependiendo de la implementación de la prueba unitaria.
¿Cómo puedo escribir pruebas de unidad de QUnit para mi código que prueba estos dos escenarios?
EDIT: El código que necesita ser probado:
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
};
}());
Considere mockjax por burlarse de la llamada ajax, funciona como un encanto @rsplak – rsplak
Podría por favor mostrar cómo ejecutar pruebas después de devoluciones de llamada de Ajax se han invocado? No puedo ver cómo, en este momento. – aknuds1