2016-09-09 4 views
0

ジャスミンテストでスパイを理解できません。Jasmineはbackbone.viewでスパイ機能が呼び出されたと期待しています。

以下のテストを実行すると、コンソールに出力CLOSE EVENTが表示されますが、テストtriggers closeは失敗します。

スパイを使用して正しくテストを書き込むにはどうすればよいですか?

define([ 
    'backbone' 
], function(Backbone){ 
    describe('TEST', function(){ 
     beforeEach(function(){ 
      this.view = new (Backbone.View.extend({ 
       initialize: function(){ 
        _(this).bindAll('close'); 
        this.$el.append($('<span>', {class: 'closeview'})); 
        $('body').append(this.$el); 
        this.$el.on('click', '.closeview', this.close); 
       }, 
       close: function(){ 
        console.log('CLOSE EVENT'); 
       } 
      })); 
     }); 
     it('exists', function(){ 
      expect(this.view.$el).toBeVisible(); 
     }); 
     it('triggers close', function(){ 
      spyOn(this.view, 'close'); 
      this.view.$el.find('.closeview').trigger('click'); 
      expect(this.view.close).toHaveBeenCalled(); 
     }); 
    }); 
}); 

答えて

1

関数をスパイすると、実際にメソッドをスタブしています。あなただけの関数が呼び出されたかどうかを確認したいが、それはコンテンツが実行されることが重要だ場合は、追加する必要があります。

spyOn(this.view, 'close').and.callThrough(); 

そして、その場合は以下を参照してください

はにあなたの例を変更してくださいあなたの問題に役立ちます:)

+0

私はこれを試して、エラーが残っている "期待されたスパイ近くに呼ばれている。 - 他の提案? – minlare

関連する問題