开玩笑的mockingoose单元测试异步不起作用

时间:2020-03-30 09:11:09

标签: javascript mongoose async-await jestjs mockingoose

这个用笑话+嘲讽写的测试每次都会失败。接收值未定义的地方。

我已经尝试了多种变体(也使用.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) {
    // ...
  }
}

请注意,控制台日志也提供了未定义的信息。我使用的模拟鹅模拟完全可以用于其他模型。

有趣的是,如果我通过删除异步并等待来更改正在测试的功能。我确实得到了DocumentQuery的返回。但是我不确定该如何处理,因为我似乎也无法从中获得任何价值。使用result._doc不会提供任何有用的信息。

0 个答案:

没有答案