Как указать функцию асинхронного обратного вызова в качестве ответа в Nock? - PullRequest
0 голосов
/ 16 января 2019

У меня есть перехватчик nock, который перехватывает вызовы от асинхронной функции (которая возвращает обещание)

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

я звоню, используя nock, вот так:

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

Но это не работает - так или иначе, ответ в ноке неправильный. Я не уверен, как это исправить. Пожалуйста, помогите

1 Ответ

0 голосов
/ 21 января 2019

В текущей документации nock не упоминается, что reply() поддерживает async / функции, возвращающие обещание, но только аргументы обратного вызова или потоки 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;
  });
...