Node.js Sinon假服务器未拦截请求
第一次尝试使用Sinon,因为它的假服务器功能允许我存根API响应。测试本身是为摩卡咖啡编写的 然而,假服务器似乎没有拦截请求 代码: 作为参考,PushMessage是一个具有静态属性serverUrl的对象。我只是将该值设置为一个假URL,然后将其重置。 notify函数使用PushMessage的静态属性中设置的serverUrl的本机请求承诺生成post消息 似乎正在发生的是,POST请求最终被正确地针对http://a.fake.server/api/notificationmanager/messages,导致地址不存在的错误Node.js Sinon假服务器未拦截请求,node.js,sinon,Node.js,Sinon,第一次尝试使用Sinon,因为它的假服务器功能允许我存根API响应。测试本身是为摩卡咖啡编写的 然而,假服务器似乎没有拦截请求 代码: 作为参考,PushMessage是一个具有静态属性serverUrl的对象。我只是将该值设置为一个假URL,然后将其重置。 notify函数使用PushMessage的静态属性中设置的serverUrl的本机请求承诺生成post消息 似乎正在发生的是,POST请求最终被正确地针对http://a.fake.server/api/notificationmanag
知道我做错了什么吗。。。?谢谢 关于这一点,Sinon GitHub存储库中出现了几个问题。Sinon的假服务器: 提供XMLHttpRequest的伪实现,并提供多个用于操作由其创建的对象的接口 在可用时,还伪造本机XMLHttpRequest和ActiveXObject,并且仅用于XMLHttpProgID。帮助测试使用XHR发出的请求 Node不使用XHR请求,因此Sinon不适用于此用例。我也希望如此 这里有一个问题可以将其分解:
Nock是一个很好的替代方案,可以与Node:Gah一起使用。从来没有想过谷歌假服务器和节点一起。。。谢谢
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();
})
});