Я пытаюсь выполнить модульное тестирование моего первого приложения backbone.js, используя sinon.js и jasmine.js .
В этом конкретном тестовом примере я использовал метод fakeServer sinon.js, чтобы возвратить фиктивный ответ со следующей структурой.
beforeEach( function(){
this.fixtures = {
Tasks:{
valid:{
"tasks":[
{
id: 4,
name:'Need to complete tests',
status: 0
},
{
id: 2,
name:'Need to complete tests',
status: 1
},
{
id: 3,
name:'Need to complete tests',
status: 2,
}
]
}
}
};
});
Поэтому, когда я на самом деле вызываю вызов fetch в приведенном ниже тестовом примере, он возвращает 3 модели правильно. В методе parse коллекции я попытался удалить корневой ключ 'tasks' и просто вернуть только массив объектов, что было упомянуто в документации к backbone.js. Но когда я делаю это, модели не добавляются в коллекцию, а collection.length возвращает 0.
describe("it should make the correct request", function(){
beforeEach( function(){
this.server = sinon.fakeServer.create();
this.tasks = new T.Tasks();
this.server.respondWith('GET','/tasks', this.validResponse( this.fixtures.Tasks.valid) );
});
it("should add the models to the tasks collections", function(){
this.tasks.fetch();
this.server.respond();
expect( this.tasks.length ).toEqual( this.fixtures.Tasks.valid.tasks.length );
});
afterEach(function() {
this.server.restore();
});
});
Сборник задач
T.Tasks = Backbone.Collection.extend({
model: T.Task,
url:"/tasks",
parse: function( resp, xhr ){
return resp["tasks"];
}
});
Подскажите, пожалуйста, что я здесь не так делаю?