2

コードの特定の部分をテストするには、プロトタイプメソッドをモックアウトして、呼び出されていることを確認する必要があります。コードは次のようになります。

SomeObject.prototype.foo = jasmine.createSpy()
var so = SomeObject()
so.bar()
expect(SomeObject.prototype.foo).toHaveBeenCalled()

これは機能しますが、私が望まないSomeObjectの状態を変更します。だから私は私が終わった後にprototype.fooの状態を元に戻す方法があるのだろうかと思っていましたか?たぶんSomeObjectのコピーを作ることを考えていました。jQuery.extendを調べましたが、それを使用してコンストラクター関数をコピーできるかどうかわかりません。

4

2 に答える 2

6

2つの選択肢。インスタンスをスパイすることをお勧めします。

spyOn(so, 'foo');

または、プロトタイプが呼び出されていることを確認する必要がある場合は、次のようにします。

spyOn(SomeObject.prototype, 'foo');

ジャスミンは、各スペックの後にすべてのスパイを解体します。

于 2011-05-18T05:28:49.627 に答える
0
delete SomeObject.prototype.foo;

tearDownで、または具体的なテストの最後に。

于 2011-05-09T16:34:56.657 に答える