Javascript のダックタイピングにより、依存関係を簡単にモックできます。
これを行う方法の簡単な例を次に示します。
データベースに追加される項目を表す単純な関数があります。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);
};