2

ジャスミンを使用して外部依存関係をテストする最良の方法を考えていました。

たとえば、背景マスクを純粋に表示および非表示にするオーバーレイ モジュールがあります。

function Overlay () {

}

Overlay.prototype.show = function () {

}

Overlay.prototype.hide = function () {

}

これで Jasmine 単体テストのセットアップが完了しました。

次に、オーバーレイ モジュールを使用する別のモジュール Dialog を作成します。

function Dialog () {

}

Dialog.prototype.show() {
 //do dialog stuff here, then show overlay
 var overlay = new Overlay();
 overlay.show();
}

オーバーレイ以外のすべてのダイアログをテストする Jasmine テストがあります。オーバーレイ ユニット テストがセットアップされて合格したと仮定すると、ダイアログ テストは var オーバーレイが定義され、その show メソッドが呼び出されたことを確認するだけでよいでしょうか?

懸念の分離のために、これはこれを行うための最良の方法ですか?

前もって感謝します

4

1 に答える 1

3

最良の方法は、オーバーレイのインスタンスをダイアログのコンストラクターに挿入することです。

function Dialog (overlay) {
  this.overlay = overlay:
}

Dialog.prototype.show() {
 this.overlay.show();
}

テストでは、スパイを挿入するだけです。

var overlay = {show: jasmine.createSpy()};
var dialog = new Dialog(overlay);
dialog.show();
expect(overlay.show). toHaveBeenCalled();

別の方法は、グローバルOverlay関数をスパイし、関数をスパイしてオブジェクトを返すことshowです。

var overlay = {show: jasmine.createSpy()};
jasmine.spyOn(Overlay, 'show').andReturn(overlay);
var dialog = new Dialog(overlay);
dialog.show();
expect(overlay.show). toHaveBeenCalled();
于 2013-03-02T17:39:12.747 に答える