【问题标题】:Sinon fake server not intercepting requestsSinon 假服务器不拦截请求
【发布时间】:2017-11-11 14:02:42
【问题描述】:

第一次尝试使用 Sinon,因为它的虚假服务器功能可以让我存根 API 响应。测试本身是为 Mocha 编写的

但是,假服务器似乎没有拦截请求。

代码:

describe('when integrated', function() {

    var server;
    beforeEach(function() {
        server = sinon.createFakeServer();
    });

    afterEach(function() {
        server.restore();
    });


    it('can send a message to the notification service', function() {
        server.respondWith("POST", new RegExp('.*/api/notificationmanager/messages.*'),
            [200, 
                { "Content-Type": "application/json" },
                '{ "messageId":23561}'
            ]);

        var messageOnly = new PushMessage(initMessageObj);
        var originalUrl = PushMessage.serverUrl;
        messageOnly.setServerAPI("http://a.fake.server/api/notificationmanager/messages");
        console.log("fake server is: ", server);
        messageOnly.notify()
            .then(function(response) {
                messageOnly.setServerAPI(originalUrl);
                return response;
            })
            .then(function(response) {
                response.should.be.above(0);
            })
        console.log(server.requests);
        server.respond();
    })
});

作为参考,PushMessage 是一个具有静态属性 serverUrl 的对象。我只是将值设置为假 URL,然后将其重置。 notify() 函数使用 request-promise-native 向 PushMessage 的静态属性中设置的 serverUrl 发布消息。

似乎正在发生的事情是,POST 请求最终被正确地尝试针对 http://a.fake.server/api/notificationmanager/messages 的 URL,导致地址不存在的错误...

知道我做错了什么...?谢谢!

【问题讨论】:

    标签: node.js sinon


    【解决方案1】:

    Sinon GitHub 存储库上有几个关于此的问题。诗乃的假服务器:

    提供 XMLHttpRequest 的假实现,并提供几个接口来操作由它创建的对象。

    还伪造原生 XMLHttpRequest 和 ActiveXObject(如果可用,并且仅适用于 XMLHTTP progids)。帮助测试使用 XHR 提出的请求。

    Node 不使用 XHR 请求,因此 Sinon 不适用于此用例。我也希望如此。

    下面是一个问题:https://github.com/sinonjs/sinon/issues/1049

    Nock 是一个很好的替代方案,适用于 Node:https://www.npmjs.com/package/nock

    【讨论】:

    • 嘎。从来没有想过一起谷歌假服务器和节点......谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-06
    • 1970-01-01
    相关资源
    最近更新 更多