测试Backbone.js模型保存使用Sinon不调用成功回调
Testing Backbone.js Model save using Sinon not calling success callback
我正在使用Jasmine和Sinon测试Backbone.js应用程序。我试图验证单击按钮是否会调用Model的save()方法并处理成功回调,该回调将向视图的el元素添加一条消息。我很难让sinon服务器触发Model的成功回调。
以下是我的规范的beforeEach的样子(beforeEah中的变量都是描述函数中的var范围)。
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");
}});
}
当我运行测试时,控制台显示"保存",但没有调用成功回调。
Backbone希望响应文本是有效的JSON,但由于server.respondWith()
方法中的响应"OK"而被炸飞。
将方法更改为:
server.respondWith([200, {"Content-Type":"text/html","Content-Length":2}, '{"OK":"True"}']);
正在成功处理成功回调。
相关文章:
- 未调用 Sinon 存根
- Sinon Spy不使用Javascript调用或应用程序
- 在sinon中存根嵌套函数调用
- 使用 Sinon.js 测试一个函数是否调用 ES6 模块中的另一个函数
- 如何防止 sinon 间谍调用被监视的方法
- 不调用方法上的 Sinon.spy
- 如何使用sinon.stub()只执行某个调用
- 测试Backbone.js模型保存使用Sinon不调用成功回调
- 对$.ajax的调用没有从sinon.js fakeServer启动回调
- 如果间接调用spied方法,则不会调用Sinon Spy
- backbone.js点击事件间谍不会使用jasmine.js和sinon.js调用
- 在模块上使用sinon测试方法调用.出口的方法
- 用sinon存根在角控制器构造中调用的范围方法
- AJAX调用的Sinon超时
- EmberJs + Sinon Stub没有被正确的对象调用
- 如何在后续调用sinon.js stub时使用不同的函数
- 我如何测试Sinon.js函数调用的顺序
- 用Sinon Js测试事件触发后调用的回调
- 每次调用Sinon.stub()都会返回不同的值
- 如何验证构造函数是否是使用 sinon 调用的