如何在nock中指定异步回调函数作为答复?

时间:2019-01-16 15:05:20

标签: typescript async-await jestjs nock

我有一个Nock拦截器,可以拦截来自异步函数的调用(返回一个Promise)

public async backendRes(): Promise<container> {
  get some data from abckend 
  return new container(stat, body, header);
}

im使用nock调用它,如下所示:

nock()
  .get('/goodey')
  .reply(async function () {
    let abc = await global.MyClass.backendRes();
    return [abc.getStatus(), abc.getBody(),
      abc.getHeader()];
  });

但是这不起作用-不知何故,小鬼内的回答是错误的。我不确定该如何解决。请帮助

1 个答案:

答案 0 :(得分:0)

当前的nock documentation并没有提到reply()支持async / Promise返回函数,仅支持回调参数或node.js流。

根据您可以改用回调机制,该回调作为第三个参数提供:

nock()
  .get('/goodey')
  .reply(async function (uri, requestBody, cb) {
    let abc = await global.MyClass.backendRes();
    cb(null, [abc.getStatus(), abc.getBody(),
      abc.getHeader()];
    return;
  });