JavascriptのDuck-Typingでは、依存関係を簡単にモックできます。ここで
は、あなたがこれを行うことができる方法の簡単な例です:
私たちは、データベースに追加されている項目を表す単純な機能を持っています。 DBは私たちが模擬したいと考える依存関係です。
function SaveItem(item){
var db = new DB();
db.insert(item);
};
DB依存関係をパラメータに変更すると、必要なものを注入できます。 関数が呼び出されると、関数はdataStoreパラメータが存在するかどうかを確認します。アイテムが存在する場合、値はdbに割り当てられます。 dataStoreがnullまたは未定義の場合、代わりに新しいDBオブジェクトが作成されます。これにより、dbに常に価値があるという確信をあなたの依存関係に注入することができます。
function SaveItem(item, dataStore){
var db = dataStore || new DB();
db.insert(item);
};
今、私たちはそうのように私たちの依存関係を模擬することができます
function mockDb(){
return{
insert: function(){
assert(true);
}
}
};
をし、テストで一緒にそれをすべて持って来るために:
function SaveItemShouldCallInsertOnDb = function(){
var testDb = new mockDb();
var someTestItem = { name: "test item" };
SaveItem(someTestItem, testDb);
};
だけ良いオプションを使用すると、あるアプリケーションを使用している場合AMD互換。 – schlingel
例からは、あなたがIoCでアプリケーションを書く必要があるという印象もありますが、これはちょっとしたIoCの目的を無視しています。私。あなたのコンポーネントは、IoCとは独立しているか、独立している必要があります。例えば。 JavaではPOJOを定義してからIoCを使ってそれらを結びつけることでこれを行います。 – Luke
メインページに簡単な例がないのはなぜですか? DIフレームワークを探している人は通常、すでに利点を知っているので、最も価値のあることは、依存関係を注入し、フレームワークを迅速に比較するための定型コードの測定方法を理解する簡単な例です。HelloWireの例は、ドキュメント: https://github.com/cujojs/wire/blob/master/docs/concepts.md – GameDeveloper