【问题标题】:How to await until nock is called如何等待直到 nock 被调用
【发布时间】:2021-08-01 17:31:51
【问题描述】:

我不确定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 函数有什么作用?
  • 您可以将nock 调用包装在一个函数中,该函数返回一个promise,该promise 将解析为您需要的值。那你应该可以await

标签: javascript node.js nock


【解决方案1】:

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

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

您的代码可以监听replied 事件以获得通知。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-25
      • 2021-08-09
      • 2021-07-07
      • 2019-05-22
      • 2021-09-30
      • 2018-09-19
      • 1970-01-01
      相关资源
      最近更新 更多