2012-01-18 11 views
1

MyServiceオブジェクトをmyMethodに挿入すると、MyServiceという偽のバージョンをテスト用に注入できるようになりました。または私は何かを逃している?慣用的なJavascript依存関係グラフ

var myObject = { 
    myMethod: function() { 
    var myService = new MyService(); 
    return myService.doSomething(); 
    } 
} 

答えて

1

依存性注入は、常に依存関係をハードコーディングするよりも優先されます。また、インタフェースへのコーディング(myObjectインスタンスにdoSomething()メソッドを持つServiceオブジェクトのコピーが与えられていると仮定して)ここで便利になるかもしれません。

+0

"インターフェース"によって、私はあなたが 'MyService'のプロトタイプが' Service'に設定されていると思いますか? JSで動的にメソッドを変更することができれば、私のテストで 'doSomething'を単に定義し直すことで、このアプローチのメリットは何ですか? – Ben

+0

正確に。パフォーマンスの向上はありません。読者が契約(インタフェース)を理解し、実装内のロジックに従うだけで、プログラムをより読みやすくすることができます。 –

+0

ご協力いただきありがとうございます。 – Ben

関連する問題