ブラウザでファイルピッカーをグローバルにモックアウトする方法に興味があります。具体的には、Firefoxでこれを行うことに最も関心がありますが、一般的な解決策を好みます。
ファイルピッカーダイアログが表示されないようにすることだけに関心があります。開いたと断言できる必要はありません。問題は、ファイル ピッカーを開く JavaScript コードの単体テストがあることです。ダイアログが開くと、テスト スイートの実行が停止します。
例の状況は、私がonRender
a のメソッドをテストしていることですBackbone.View
。このメソッドはサブビューをレンダリングし、レンダリング時にファイル ピッカーを開きます。私はそのサブビューを直接テストしていないので、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
}
基本的に、ファイル ピッカーが開かれる原因となる動作を明示的に模倣したくはありません。これは、ここでテストする対象ではないためです。これを行うと、テスト スイートがより脆弱になり、保守が困難になります。