2011-05-09 2 views
2

내 코드의 특정 부분을 테스트하려면 프로토 타입 메소드를 조롱하여 호출해야합니다. 코드는 다음과 같습니다.재스민 : 단위 테스트 후 프로토 타입 메소드 되돌리기

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

이 방법이 작동하지만 원하지 않는 SomeObject의 상태가 변경됩니다. 그래서 내가 끝나면 prototype.foo의 상태를 되돌릴 수있는 방법이 있는지 궁금합니다. SomeObject의 복사본을 만드는 것에 대해 생각하고있었습니다. jQuery.extend 좀 살펴 봤지만 생성자 함수를 복사하는 데 사용할 수 있는지 확실하지 않습니다.

+0

처리 할 조롱 라이브러리를 지정해야합니다. –

+0

Jasmine.js를 사용하고 있습니다. – Pickels

+0

이를 반영하기 위해 제목과 태그를 업데이트했습니다. –

답변

5

두 가지 선택 사항.

spyOn(SomeObject.prototype, 'foo'); 

재스민 각 사양 결국 간첩을 눈물 : 당신은 당신이 프로토 타입이 호출되어 있는지 확인하려면 주장하는 경우,

spyOn(so, 'foo'); 

을 또는 : 그것은 예를 감시하는 것이 바람직합니다.

0
delete SomeObject.prototype.foo; 

tearDown 또는 콘크리트 테스트가 끝난 시점.