这个用笑话+嘲讽写的测试每次都会失败。接收值未定义的地方。
我已经尝试了多种变体(也使用.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不会提供任何有用的信息。