2011-05-09 39 views
2

爲了測試我的代碼的某個部分,我需要嘲笑一個原型方法以確保它被調用。代碼看起來像這樣。Jasmine:在單元測試後恢復原型方法

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

這有效,但它改變了我不想要的SomeObject的狀態。所以我想知道有沒有辦法在完成後恢復prototype.foo的狀態?我在考慮製作一個SomeObject的副本。我看了看jQuery.extend,但我不確定是否可以使用它來複制構造函數。

+0

你應該指定你正在處理哪個模擬庫。 – 2011-05-09 14:24:10

+0

我正在使用Jasmine.js。 – Pickels 2011-05-09 14:42:19

+0

我已更新標題和標籤以反映這一點。 – 2011-05-09 14:45:57

回答

5

有兩種選擇。這是最好窺視實例:

spyOn(so, 'foo'); 

或者,如果你堅持要驗證原型叫做:

spyOn(SomeObject.prototype, 'foo'); 

茉莉花每個天賦後,眼淚就下來了所有間諜。

0
delete SomeObject.prototype.foo; 

in tearDown或只是在混凝土試驗結束。