【发布时间】: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,导致地址不存在的错误...
知道我做错了什么...?谢谢!
【问题讨论】: