2012-01-15 2 views
12

나는 Jasmine과 QUnit의 서로 다른 테스트 케이스에 대한 스펙을 작성하여 비교하고 있습니다. 이벤트가 요소에 바인딩되어 있는지 확인하기 위해 테스트를 작성해야하기 전에 동일하게 보입니다.QUnit에 spyOn 아날로그가 있습니까?

$('.page').live('click', function() { page_clicked($(this)) }); 

page_clicked 같은

이벤트 바인딩 외모 개인 방법이지만 다른 모듈의 공개 방법을 요구한다.

it('should bind events to pages', function() { 
    spyOn(search, 'get_results'); 

    $('.page:eq(0)').trigger('click'); 

    expect(search.get_results).toHaveBeenCalled(); 
}); 

이 시험 작동 : 여기

는 재스민 사양입니다. 이제 QUnit에 대해 동일한 테스트를 작성하려고하고 있으며 spyOn과 비슷한 것을 찾을 수 없습니다. QUnit에 대해이 테스트를 작성하는 방법은 무엇입니까?

답변

9

원인 QUnit에는 스파이 또는 모의가 없습니다. 그러나 Sinon.JS 조롱 프레임 워크를 사용할 수 있습니다. 테스트는 sinon spy를 사용하여 다음과 같아야합니다

이 이
+0

복사/코드 만'어설 (spy.calledOnce)를 붙여 시도''어설'sinon.assert.called (스파이) defined'되지 않고 발생 는'던졌습니다

var spy = sinon.spy(search, 'get_results'); sinon.assert.calledOnce(spy); 
'예상 get_results가 적어도 한 번 호출되었지만 호출 된 적이 없다 ' –

+0

좋아, 그것은 sinon doku에서 복사/붙여 넣기가되었습니다. –

+0

여전히 작동하지 않습니다. 'get_results는 한 번 호출되었지만 0 번 호출되었습니다. ' 'page_clicked' 함수에서'get_results' 호출 후에 경고를하고 경고 메시지가 나타나면 Jasmine 테스트는 통과하지만 QUnit + SinonJS는 그렇지 않습니다. –

관련 문제