2013-06-24 6 views
3

sinon.js로 window.document를 스파이하려고합니다. document.getElementById를가 "바"를 반환해야합니다 함수 인수 "foo는"호출 될 때 :sinon.js로 미리 정의 된 객체를 스파이웨어하는 방법

var document = { 
    getElementById = function() {} 
} 

sinon.spy(document, "getElementById").withArgs("foo").returnValues = ["bar"]; 

은 내가이 호출에서 기대하는 것은 이것이다 : 내가 할 것은 이것이다. 내 오류가 뭐니? 나는이 같은 자신에 의해에서 getElementById를 정의하면

내가 예상 결과를 얻을 : 당신은 녹음 기능에 호출과 그 테이를 확인할가 호출 할 수

document.getElementById = function(param) { 
    if (param === "foo") return "bar"; 
} 

답변

4

을, 그러나 결코 함수의 동작을 변경합니다.

sinon.stub(document, 'getElementById').withArgs('foo').returns(['bar']) 
+0

: withArgs에 대한 문서에서하십시오 sinon.stub

는 수신 된 인수가

가 Whar 당신이 찾고있는 withArgs에 전달 사람들을 matche 경우에만 레코드를 호출하는 스파이를 작성하다 고마워요. –

+0

@Aykut Yaman : 여기서 뭘하는지'document.getElementById = function (param) { if (param === "foo") return "bar";}'는 replaci입니다. 원래의 getElementById 함수를 영구적으로 사용하십시오. 'stub '에 의해 행해지는 것과 같은 일. 유일한 차이점은 스텁 일 경우 원래 기능을 '복원'할 수있는 옵션이 있다는 것입니다. – Pawan