如何等待直到诺克被调用

How to await until nock is called

我不确定 nock 是否支持在调用拦截器时使用回调/事件发射器等待或通知。

例如:

const scope = nock(config.research.url)
                   .post(config.research.routes.getOdds, expectBody)
                   .reply(200)

while(true){
  expect(scope.isDone()).toBeTruthy()
  await sleep(500)
}

我的问题

如何使用 nock API 改进上述代码?

nock 根据请求和响应发出事件:https://github.com/nock/nock/#events

emit('request', function(req, interceptor, body))
emit('replied', function(req, interceptor))

您的代码可以侦听 replied 事件以获取通知。

nock 允许将回调传递给 reply 函数,这可能是处理该问题的方法之一。将您的 reply 代码包装成 Promise 并等待它。

另一种解决方案可能是订阅范围发出的 replied 事件并将其包装到 Promise 中以等待回复

 scope.on('replied', function(req, interceptor) { ... })