0

JsMockitoの検証メカニズムが機能していません。私の設定では、Common と Suggestions の 2 つのクラスがあります。

MyNS.Common = function() {};
MyNS.Suggestions = function() {};

Common のインスタンスを Suggestions に設定しました。

MyNS.Suggestions.prototype.setCommon = function(common) {this.common = common;};

次に、Common.getAdGroupId() の戻り値を使用し、この値で Suggestions.refresh() を呼び出します。テストしたいのはそれだけです。

MyNS.Suggestions.prototype.init = function() {
    // This is mocked to return 56 as can be seen in the test above.
    var adGroupId = this.common.getAdGroupId();
    this.refresh(adGroupId);
};

完全な動作例はフィドルにあります: http://jsfiddle.net/sbel/kqdTV/2/。お知らせ下さい。

4

1 に答える 1

0

ここにはいくつかのエラーがあります。

  1. テスト対象のシステムをモックアウトしました。MyNS.Suggestions をテストしていますよね?モックなので、「init()」メソッドは空のスタブです。MyNS.Suggestions オブジェクトの実際のインスタンスを使用する必要があります。
  2. 「mockedSuggestions.setCommon(mockedCommon)」を呼び出しています。「setCommon」はモック化されたメソッドであるため、何もしません。モックされたオブジェクトの値を参照したい場合は、getter メソッド ("getCommon") を作成してから、"when(mockedSuggestions).getCommon().thenReturn(mockedCommon);" を実行する必要があります。もちろん、そもそも Suggestions オブジェクトはモックであってはならないため、これは無関係です。

お役に立てれば!

于 2013-03-05T00:43:45.257 に答える