backbone.js klicken Sie auf Ereignis-spy ist nicht immer nannte, mit der jasmine.js und sinon.js

Ich versuche zu testen, klicken auf eine Schaltfläche mit backbone.js, jasmine.js und sinon.js. Aber der folgende test case schlägt fehl. Ich bin mit einem Spion zu verfolgen, ob es immer genannt wird oder nicht.
Können Sie mir bitte helfen mit diesem?

Dank.

Neue Aufgabe Vorlage

<script id='new_task_template' type='text/template'>
  <input type='text' id='new_task_name' name='new_task_name'></input>
  <button type='button' id='add_new_task' name='add_new_task'>Add Task</button>
</script>

NewTaskView

T.views.NewTaskView = Backbone.View.extend({
  tagName: 'section',
  id: 'new_task_section',
  template : _.template ( $("#new_task_template").html() ),
  initialize: function(){
    _.bindAll( this, 'render', 'addTask');
  },
  events:{
    "click #add_new_task" : "addTask"
  },
  render: function(){
    $(this.el).html( this.template() );
    return this;
  },
  addTask: function(event){
    console.log("addTask");
  }
});

Jasmin Testfall

describe("NewTaskView", function(){
  beforeEach( function(){    
    this.view = new T.views.NewTaskView();
    this.view.render();
  });

  it("should #add_new_task is clicked, it should trigger the addTask method", function(){
    var clickSpy = sinon.spy( this.view, 'addTask');
    $("#add_new_task").click();
    expect( clickSpy ).toHaveBeenCalled();
  });
});

Jasmin Ausgang

NewTaskView
  runEvents
    runshould #add_new_task is clicked, it should trigger the addTask method
      Expected Function to have been called.
  • Wo in der DOM hat die Ansicht Rendern selbst? Ist die Vorlage noch innerhalb der specs? Wahrscheinlich Taste#add_new_task existiert nicht in den DOM der Jasmine spec runner und daher $("#add_new_task").click(); hat keine Wirkung. Wenn Sie sicher sind, dass die view gerendert wird, die mit der richtigen Vorlage, die Sie verwenden konnten NewTaskView element als Kontext für die jquery-Funktion: $('#add_new_task', this.view.el).click();.
  • Ich denke, diese Frage ist bereits hier beantwortet: stackoverflow.com/questions/8441612/...
InformationsquelleAutor felix | 2012-02-02
Schreibe einen Kommentar