Я тестирую приложение Backbone.js с помощью Jasmine и Sinon. Я пытаюсь проверить, что нажатие кнопки вызывает метод Save() модели и обрабатывает обратный вызов успеха, который добавляет сообщение элементу представления. У меня возникли проблемы с получением сервера sinon для запуска обратного вызова успеха модели.Тестирование Backbone.js Сохранение модели с использованием Sinon, не вызывающего обратного вызова.
Хеш, как выглядит мой spec beforeEach (переменные beforeEach являются переменными в функции описания).
beforeEach(function(){
server = sinon.fakeServer.create(); //create the fake server
server.respondWith([200, { "Content-Type": "text/html", "Content-Length": 2 }, "OK"]); //fake a 200 response
loadFixtures('signup_modal.html'); //load the fixture
element = $("#signupModal");
specSignUp = new SignUp();
signUpView = new SignUpView({model : specSignUp, el: $("#signupModal")});
});
И это то, что сам тест выглядит следующим образом:
it("Should call send request",function(){
element.find("#signupButton").trigger('click'); //click the button which should trigger save
server.respond(); //fake the response which should trigger the callback
expect(element).toContain("#message");
});
При попытке построить реализацию этого я создал простой метод обратного вызова, чтобы показать мне, что обратный вызов успеха beign срабатывает:
sendRequest: function(){
console.log("saving");
this.model.save(this.model.toJSON(),{success: function(data){
console.log("success");
iris.addMessage(this.$("#messageContainer"),"Thank you");
}});
}
Когда я запускаю тест, консоль показывает «сохранение», но обратный вызов успеха не вызван.
Вызывается ли обратный вызов ошибки? – abraham
Ах, ха! Ошибка вызвана! Я никогда не думал об этом. – bittersweetryan