我有一个模型通过ember-data rest适配器保存到我的服务器。
如何通过存根或模拟ember-data的提交功能来测试数据是否正在发送并正确返回到服务器,而无需重新测试已经测试过的ember数据?
最好是在Jasmine!
答案 0 :(得分:1)
在单元测试中,您绝不应使用真正的客户端服务器通信。通常,您会模拟浏览器的XMLHttpRequest实现。
有许多工具,例如jasmine-fake-ajax或sinonjs。两者都覆盖浏览器的XHR实现并模拟服务器。所以你可以设置路线和应该返回的路线。两者都可以进行非常精细的调整,因此您可以检查for类型,内容类型或设置http响应代码。
{
setUp: function () {
this.xhr = sinon.useFakeXMLHttpRequest();
var requests = this.requests = [];
this.xhr.onCreate = function (xhr) {
requests.push(xhr);
};
},
tearDown: function () {
this.xhr.restore();
},
"test should fetch comments from server" : function () {
var callback = sinon.spy();
myLib.getCommentsFor("/some/article", callback);
assertEquals(1, this.requests.length);
this.requests[0].respond(200, { "Content-Type": "application/json" },
'[{ "id": 12, "comment": "Hey there" }]');
assert(callback.calledWith([{ id: 12, comment: "Hey there" }]));
}
}