我感興趣的是如何在全球範圍內模擬在瀏覽器中的。具體來說,我最感興趣的是在Firefox這樣做,但寧願一個通用的解決方案。如何模擬瀏覽器中的文件選取器進行單元測試?
我只關心防止文件選取器對話框出現。我不需要能夠斷言它確實開放。問題是我有用於打開文件選擇器的JavaScript代碼的單元測試。當對話框打開時,暫停測試套件的執行。
一個示例情況是我正在測試Backbone.View
的onRender
方法。該方法呈現子視圖,它將在呈現時打開文件選取器。由於我不是直接測試該子視圖,因此當我僅對單元測試onRender
方法的某些其他部分感興趣時,我不想嘲笑其部分行爲。
例子:
//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
}
從本質上講,我不想明確地模擬出導致要打開的文件選擇器,因爲它不是我的興趣在這裏測試的行爲。這樣做會使測試套件變得更加脆弱並且難以維護。
使用是否使用js-test-driver? – leeand00
幫我一個忙,並添加單元測試並註釋顯示它的函數被調用的行。 – leeand00
增加了一些代碼和情況說明。 –