1
興農間諜,我有一個虛擬Backbone.Model
Mocha.js和Backbone.js的
App.Models.Note = Backbone.Model.extend({
default: {
title: ''
}
);
和我的模型像下面這樣的Backbone.View
:
App.Views.NoteView = Backbone.View.extend({
template: ...,
initialize: function() {
this.listenTo(this.model, "change", this.render);
this.render();
},
render: function() {
this.$el.html(this.template({
title: this.model.get("title")
}));
return this;
}
});
爲了進行測試,我使用mocha.js + chai + sinon,並且我有以下測試
describe("App.Views.NoteView", function() {
beforeEach(function() {
this.view = new App.Views.NoteView({
el: this.$fixture,
model: new App.Models.Note()
});
}
afterEach(function() {
this.view.model.destroy();
});
it("my try 1", function() {
var mySpy1 = sinon.spy(this.view, "render");
this.view.model.set({
title: "a new Title"
});
expect(this.view.render).to.have.been.calledOnce;
});
}
我試圖測試的是如何間諜render
方法:當我更改模型屬性時,將調用render
方法。然而,即使渲染正常執行,測試給我錯誤
'expected render to be called once but was called 0 times'
任何幫助嗎?
抱歉,不知道我理解它總是給錯誤或只有當你不更改模型的屬性? – Quince
當更改模型標題時,渲染方法正常調用。然而,無論如何,期望產生的錯誤高於 – geo
,我在這裏發現了類似的問題:http://stackoverflow.com/questions/8441612/why-is-this-sinon-spy-not-being-called-when-i-run-此測試?RQ = 1 – geo