3

QUnit で sinon スタブを使用して一連のテストを作成しています。テストされたメソッドには、Foo と呼ばれるカスタム プラグインの依存関係があります。

// setup
var stub = this.stub(jQuery.fn, "Foo").returns("");

// run
someProprietyMethod();

// assertions
equal(stub.args.length, 3);
equal(stub.args[0], "bar");
equal(stub.thisValues[0], "#some-selector");
// other assertions

手動でスタブを作成する場合に比べて、sinon スタブの使用は非常に簡単で直感的です。問題は、これが Chrome と Firefox では正常に機能するが、IE8 では機能しないことです。

テスト結果のIE8の場合、次のようになります。

Died on test #1 undefined: Object doesn't support this property or method

テストしたコードにデバッグ用のブレッドクラムを配置すると、$().Foo と $.fn.Foo の両方がメソッドとして認識されるように見えますが、テストは $("#some-selector").Foo() が呼び出された後に実行を停止します。 、IE8で実行した場合。

4

1 に答える 1

0

既存のスタブ ライブラリでは jQuery のプロトタイプをスタブできないように思われるため、独自のスタブ ライブラリを作成することになりました。

問題の 1 つは、そのコンテキストをテストしたい場合、メソッドをスタブするときに「this」のコンテキストを失っているようです。

于 2012-11-29T00:28:50.583 に答える