2012-01-11 5 views
3

バックボーンモデルのトリガーメソッドをテストするときに、私は奇妙なエラーが発生しました。以下は私のコードです:ジャスミンを使用したバックボーンモデルのトリガーメソッドのテスト

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の下で私はうまく働いた可能性があります。JavaScriptエラーが発生している可能性がありますか?コンソールを確認してください。 – Gazler

+0

'expect(category.trigger).toHaveBeenCalledWith( "notesFetchedEvent") 'を' wasCalledWith'として使用してみることをお勧めします。 –

+0

toHaveBeenCalledWithは私にとっては機能しません。上記のコードは、私の要点を説明するためのサンプルコードです。私のフルコードはhttp://pastie.org/private/ttkougq7n7jg4zx3hliq(カテゴリーモデル)とhttp://pastie.org/private/uh4dxauteb7qvt6pgkp1hq(テスト) –

答えて

4

イベントトリガーをテストする最良の方法は、トリガーメソッドを直接監視するのではなく、イベントのリスナーの1つとしてスパイを登録することです。これは次のようになります:

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(); 
    }); 
}); 
関連する問題