JASMINEとtestdouble.jsをモッキングライブラリとして使用して、JSアプリケーションのテストを作成しています。私はモジュールでコードを整理するためにAMDフォーマットを使用しており、モジュール・ローダーとしてRequreJSを使用しています。私は、testdouble.jsを使用して、AMDフォーマットでテストされているモジュールの依存関係を置き換えて、RequireJS経由でロードする方法を知りました。ドキュメントはこれについて不明である、または私は何かが欠けているので、誰かが正しい方向に私を指すことができる場合。AMDモジュール形式の依存関係をtestdouble.jsに置き換えます。
私は自分のセットアップと私が直面している問題を説明する例を投稿します。
car.js
define("car", ["engine"], function(engine) {
function drive = {
engine.run();
}
return {
drive: drive
}
});
engine.js
define("engine", function() {
function run() {
console.log("Engine running!");
}
return {
run: run
}
});
car.spec.js
define(["car"], function(car) {
describe("Car", function() {
it("should run the motor when driving", function() {
// I am not sure how to mock the engine's object run method
// and where to place that logic, in beforeEach or...
td.replace(engine, "run");
car.drive();
// How to verify that when car.run() has executed, it calls this mocked method
td.verify(engine.run());
});
});
});