我开始用Jest测试我的代码,我做一个看似简单的测试都无法通过。我只是想检查我从 Maogose 数据库请求中收到的是否是一个对象。
函数 fetchPosts()
正在运行,因为我将它与 React 前端连接起来,并且它可以正确显示数据。
这是我的功能 fetchPosts()
:
module.exports = {
fetchPosts() {
return new Promise((resolve, reject) => {
Posts.find({}).then(posts => {
if (posts) {
resolve(posts)
} else {
reject()
}
})
})
}
}
我的测试:
it('should get a list of posts', function() {
return posts.fetchPosts().then(result => {
expect(typeof result).toBe('object')
})
})
这使得测试失败,Jest 说
’ 超时 - 在 jest.setTimeout 指定的 5000 毫秒超时内未调用异步回调。 ‘
问题:我怎样才能通过这个测试?
原文由 mokiliii Lo 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以使用
resolves
获得异步结果,如 Jest 文档中所示。在你的情况下:
…虽然我怀疑你的帖子列表实际上是一个数组,所以你可能想要这个:
另一个提示:您不需要在额外的承诺中包装
fetchPost
的主体,您可以简单地返回从Posts.find
获得的承诺并添加then
像这样: