Wie mock/stub-callback-Funktion mit sinon.js?
Möchte ich schreiben unit-tests mit QUnit und Sinon.Js. Ich habe eine Anwendung, wo der Benutzer kann auf eine Schaltfläche klicken und ein modales Dialogfeld appers zu behandeln, das herunterladen von Dateien. Die Benutzer können das Dialogfeld schließen, und es wird eine Methode zum ausführen zurücksetzen einiger Variablen. Mein test-code:
$(function() {
$.fn.copy_button = function(){};
ln_download_view = new DownloadModalView();
ln_download_view.modal = {'modal': function() {}};
var download_modal_dialog = $('.download-modal');
download_modal_dialog.modal = function(param){};
var modal_mock = sinon.mock(ln_download_view.modal);
var download_modal_dialog_mock = sinon.mock(download_modal_dialog);
//Should be inserted, because ln_download_view.modal is mocked
//The close button even handler
$('#btn_close_modal').click(function(){
download_modal_dialog.modal('hide');
});
//Dirty stuff to do after the window closes
//Basicly the click triggers this event handler
$('.download-modal').on('hide',function() {
window.clearInterval(window.periodicalTimer);
});
$('div .option-container').click(function() {
if(!$(this).hasClass("selected-option"))
{
$('div #option-presenting').toggleClass("selected-option");
$('div #option-editing-and-presenting').toggleClass("selected-option");
$('.image').toggle();
}
});
module("views");
test("Download modal dialog is displayed", function(){
var modal_triggered = modal_mock.expects("modal").once();
ln_download_view.handleDownloadClick();
ok(modal_triggered.verify());
});
test("Download modal dialog is closed",function(){
var modal_triggered = download_modal_dialog_mock.expects("modal");
$('#btn_close_modal').trigger('click');
ok(modal_triggered.verify());
});
});
Was ich nicht verstehe ist, wie kann ich testen/mock/stub dieses Stück code:
$('.download-modal').on('hide',function() {
window.clearInterval(window.periodicalTimer);
});
Habe ich nicht das Tiefe Verständnis noch.
InformationsquelleAutor boli | 2013-08-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht mock/stub eine anonyme Funktion. Aber man kann ein refactoring und stub/mock, die mit Namen Rückruf.
Dann nutzen Sie
sinon.spy
, so funktioniert es wie erwartet + spy, dass es calleed.Danke, ich habe es geschafft. Aber noch eine Frage? Was ist der Unterschied zwischen call-onHide() und rufen Sie on_hide_spy.call(). (var on_hide_spy = sinon.spy(onHide);)
.call
einfach können Sie rufen Sie die Funktion im jeweiligen Kontext. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...Der oben funktioniert nicht mehr mit Sinon 2.3.8
var a = function() {}; var spy = si.spy(this, a);
Wirft:TypeError: Attempted to wrap undefined property function () {} as function
InformationsquelleAutor Eugene Naydenov
Hier ist meine Methode:
In Ihr vor jedem, eine Funktion, die nichts tut:
Dann in Ihrem test, Spion auf, dass:
Dann rufen Sie Ihre Methode auf, wobei in einem callback, der ausgelöst wird, den doNothing Methode:
InformationsquelleAutor alukaiser