2012-01-11 5 views
3

내 백본 모델의 트리거 방법을 테스트 할 때 이상한 오류가 발생했습니다. 다음은 내 코드입니다 :Jasmine을 사용한 백본 모델의 트리거 방법

Category = Backbone.Model.extend({ 
    fetchNotes: function() { 
    this.trigger("notesFetchedEvent"); 
    } 
}) 

describe("Category", function() { 

it("should fetch notes", function() { 
    var category = new Category; 
    spyOn(category, "trigger"); 
    category.fetchNotes(); 
    expect(category.trigger).wasCalledWith("notesFetchedEvent"); 
}) 

}) 

내가 가진 오류는 "[ 'notesFetchedEvent']으로 호출 된 것이 아니라 함께 ... jibberish 불렀다 스파이 트리거 예상 ..."했다. 누구든지이 문제를 해결하는 방법을 알고 있습니까? 감사.

+0

나를 위해 잘된 jasmine1.1.0-rc1에서 일한 것 같습니다. 자바 스크립트 오류가 발생했을 수 있습니다. 콘솔을 확인하십시오. – Gazler

+0

'expect (category.trigger) .toHaveBeenCalledWith ("notesFetchedEvent") '와 같이 시도해주세요.'wasCalledWith'는 더 이상 사용되지 않습니다. –

+0

toHaveBeenCalledWith가 작동하지 않습니다. 위의 코드는 내 요점을 설명하기위한 샘플 코드입니다. 내 전체 코드는 http://pastie.org/private/ttkougq7n7jg4zx3hliq(category 모델)이며 http://pastie.org/private/uh4dxauteb7qvt6pgkp1hq (테스트) –

답변

4

이벤트 트리거를 테스트하는 가장 좋은 방법은 트리거 메서드를 직접 감시하는 대신 이벤트의 리스너 중 하나로 스파이를 등록하는 것입니다. 이것은 다음과 같이 보일 것입니다 :

describe("Category", function() { 
    it("should fetch notes", function() { 
    var category = new Category(); 
    var spy = jasmine.createSpy('event'); 
    category.on('notesFetchedEvent', spy); 
    category.fetchNotes(); 
    expect(spy).toHaveBeenCalled(); 
    }); 
}); 
관련 문제