jest mockin goose модульный тест asyn c не работает - PullRequest
0 голосов
/ 30 марта 2020

Этот тест, написанный с помощью jest + mockin goose, каждый раз терпит неудачу. Где полученное значение не определено.

Я пробовал несколько вариантов с ним (также используя .then ()), и я не знаю, почему оно не работает. Я повторно использовал какой-то другой мой код, который почти схож с тем, где он работает, но в этом сценарии это не так, и я не могу на всю жизнь понять, почему! Любая помощь приветствуется.

const mockingoose = require('mockingoose').default;

const Foo = require('../../../app/models/foo');
const att = require('../../../app/utils/foo');

it('getFooData', async () => {
    const doc = [{
      //...
    }];

    mockingoose(Foo).toReturn(doc, 'find');

    await expect(att.getFooData({}, {})).resolves.toBe(doc);
}

И функция, для которой я пишу тест:

async function getFooData(query, options) {
  try {
    const data = await Foo.find(query, options);
    console.log('got data:', data );
    return data;
  } catch (e) {
    // ...
  }
}

Обратите внимание, что журнал консоли также дает неопределенное значение. Mockin goose mock, который я использовал, отлично работает для другой модели.

Интересно, если я изменю функцию, я проверяю, удалив asyn c и жду. Я вернул DocumentQuery. Но я не уверен, что делать с этим с другой стороны, поскольку я также не могу получить какую-либо выгоду от этого. Использование result._do c не дает ничего полезного.

...