如何测试ember-data一直致力于服务器?

时间:2012-07-31 15:06:19

标签: javascript ember.js jasmine

我有一个模型通过ember-data rest适配器保存到我的服务器。

如何通过存根或模拟ember-data的提交功能来测试数据是否正在发送并正确返回到服务器,而无需重新测试已经测试过的ember数据?

最好是在Jasmine!

1 个答案:

答案 0 :(得分:1)

在单元测试中,您绝不应使用真正的客户端服务器通信。通常,您会模拟浏览器的XMLHttpRequest实现。

有许多工具,例如jasmine-fake-ajaxsinonjs。两者都覆盖浏览器的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" }]));
    }
}