как указать асинхронную функцию обратного вызова в качестве ответа в nock?

У меня есть перехватчик 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()];
  });

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


person lanzchilz    schedule 16.01.2019    source источник


Ответы (1)


В текущей документации по 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;
  });
person alaarmann    schedule 20.01.2019