2014-09-25 5 views
1

: 단위를 확인하면 정확하게를 제가 테스트중인 장치에이 모의를 전달할 수있는 방법비웃음 Sinon.js의 클래스와 나는 어떤 클래스의 어떤 객체를 조롱하지만,이 잘못을 잡으려면 instanceof를

function MyClass(){} 

var myInstance = new MyClass(); 
var mock = sinon.mock(myInstance); 

console.log(mock instanceof MyClass); // false 

을 생성자에서 같은 instanceof?

저는이 스텁이이 문제를 해결하고 있음을 알고 있습니다.하지만 정확히 모의이 필요합니다. 내가 잘못 아니에요 경우

감사합니다 =)

답변

0

는 Sinon 직접 instanceof 결코 당신이 원하는 일을하려고하지 않습니다 의미 자신의 프로토 타입 체인을 채택하기보다는, 관련 객체를 래핑 조롱.

테스트중인 유닛을 변경할 수있는 경우 프로토 타입 체인이 아닌 들어오는 개체에 중요한 속성이 있는지 확인하십시오. 예를 들어 기기에서 MyClassfoo 방법을 사용하는 경우 o instanceof MyClass 대신 기기 확인을 typeof o.foo === 'function'으로 설정합니다.

+0

,이 솔루션입니다 - ducktype의 스타일에서 인스턴스를 확인할 수는 있지만, 그것은 'instanseof'와 같은 약간의 해킹과 모국어 기능입니다. – gobwas

0

질문이 잘못되었습니다.

대신 테스트중인 장치에 mock를 전달하는, 내가 필요로 여전히 myInstance 개체를 전달하고 검증 mock :

물론
new SUT(myInstance); 
mock.verify();