我想使用nock测试一些http调用,但它总是返回503服务不可用
describe('BASIC API AUTH TESTS', function() {
'use strict';
before(async () => {
if (!nock.isActive()) nock.activate();
});
after(async() => {
nock.cleanAll();
await helpers.removeTestUsers(mongoDb);
});
it('should return nock response', async() => {
if (!nock.isActive()) nock.activate();
nock('http://zombo.com').get('/').times(1).reply(200, 'Ok');
http.get('http://zombo.com/'); // expected 200 got 503 service unavailable
console.log('nock.pendingMocks(): ', nock.pendingMocks()); // [ 'GET http://zombo.com:80/' ]
});怎么啦?
testrunner: mocha节点版本: 8.12 nock: 13.0.4
发布于 2020-09-25 03:21:18
这个问题很可能与您在退出测试之前没有等待请求响应(通过Nock)的事实有关。因此,after块中的nock.cleanAll();正在删除您的nock,而http.get正在尝试进行实时调用。
如果你想坚持使用原生Node,你需要抛弃async (或者喜欢Promises)。Node docs有一个关于如何使用回调来等待响应的示例,然后您就可以调用Mocha done function了。如果你想继续使用异步,我推荐一个支持promises的超文本传输协议客户端库,然后await请求。
https://stackoverflow.com/questions/64049333
复制相似问题