title: Sinon does not seem to spy for an event handler callback
body: <p>I'm testing a backbone view with Jasmin, Simon and jasmin-simon.</p>
  
  <p>Here is the code:</p>
  
  <pre><code>var MessageContainerView = Backbone.View.extend({
      id: 'messages',
      initialize: function() {
          this.collection.bind('add', this.addMessage, this);
      },
      render: function( event ) {
          this.collection.each(this.addMessage);
          return this;
      },
      addMessage: function( message ) {
          console.log('addMessage called', message);
          var view = new MessageView({model: message});
          $('#' + this.id).append(view.render().el);
      }
  });
  </code></pre>
  
  <p>Actually, all my tests pass but one. I would like to check that <code>addMessage</code> is called whenever I add an item to <code>this.collection</code>.</p>
  
  <pre><code>describe('Message Container tests', function(){
      beforeEach(function(){
          this.messageView = new Backbone.View;
          this.messageViewStub = sinon.stub(window, 'MessageView').returns(this.messageView);
  
          this.message1 = new Backbone.Model({message: 'message1', type:'error'});
          this.message2 = new Backbone.Model({message: 'message2', type:'success'});
          this.messages = new Backbone.Collection([
              this.message1, this.message2            
          ]); 
  
          this.view = new MessageContainerView({ collection: this.messages });
          this.view.render();
  
          this.eventSpy = sinon.spy(this.view, 'addMessage');
          this.renderSpy = sinon.spy(this.messageView, 'render');
          setFixtures('&lt;div id="messages"&gt;&lt;/div&gt;');
      });
      afterEach(function(){
          this.messageViewStub.restore();
          this.eventSpy.restore();
      });
  
      it('check addMessage call', function(){
          var message = new Backbone.Model({message: 'newmessage', type:'success'});
          this.messages.add(message);
  
          // TODO: this fails not being called at all
          expect(this.view.addMessage).toHaveBeenCalledOnce();
          // TODO: this fails similarly
          expect(this.view.addMessage).toHaveBeenCalledWith(message, 'Expected to have been called with `message`');
          // these pass
          expect(this.messageView.render).toHaveBeenCalledOnce();
          expect($('#messages').children().length).toEqual(1);
      });
  });
  </code></pre>
  
  <p>As you can see <code>addMessage</code> is called indeed. (It logs to the console and it calls <code>this.messageView</code> as it should. What do I miss in spying for <code>addMessage</code> calls?</p>
  
  <p>thanks, Viktor</p>