Ich bin daran interessiert, wie global die Dateiauswahl im Browser mock out. Insbesondere bin ich am meisten daran interessiert, dies in Firefox zu tun, würde aber eine allgemeine Lösung bevorzugen.Wie verspotten Sie die Dateiauswahl im Browser für Komponententests?
Ich möchte nur verhindern, dass der Dateiauswahldialog erscheint. Ich muss nicht behaupten können, dass es geöffnet hat. Das Problem ist, dass ich Komponententests für JavaScript-Code habe, die die Dateiauswahl öffnen. Wenn das Dialogfeld geöffnet wird, stoppt es die Ausführung der Testsuite.
Eine Beispielsituation ist, dass ich die onRender
Methode von Backbone.View
teste. Diese Methode rendert eine Unteransicht, die die Dateiauswahl beim Rendern öffnet. Da ich diese Unteransicht nicht direkt teste, würde ich es vorziehen, Teile ihres Verhaltens nicht zu verspotten, wenn ich nur daran interessiert bin, einen anderen Teil der onRender
-Methode zu testen.
Beispiel:
//Test file
it("should do something", function() {
var view = new App.Views.SomeView();
spyOn(view.modelBinder, "bind");
view.render();
expect(view.modelBinder.bind).toHaveBeenCalled();
});
//View file
onRender : function() {
this.modelBinder.bind(this.el, this.model);
this.$("#thing").html(this.subview.render().el); //This line has a side effect that opens file picker
}
Im Grunde will ich nicht explizit auf das Verhalten verspotten, dass die Dateiauswahl geöffnet werden verursacht, weil es nicht das, was interessiert Ich bin hier bei der Prüfung. Dadurch wird die Testsuite viel brüchiger und schwieriger zu warten.
Verwenden Sie js-Test-Treiber? – leeand00
Tun Sie mir einen Gefallen und fügen Sie den Einheitentest hinzu und kommentieren Sie die Zeile, in der die Funktion aufgerufen wird, die sie anzeigt. – leeand00
Hinzugefügt Code und Erklärung der Situation. –