我尝试使用nestjs创建一个简单的测试,但遇到以下错误
测试函数不能同时接受“done”回调并返回某些内容。请使用“done”回调或返回承诺。
返回值:承诺{}
单元测试是如此简单,但是当我使用done()时,我得到一个错误;
it('throws an error if a user signs up with an email that is in use', async (done) => {
fakeUsersService.find = () => Promise.resolve([{ id: 1, email: 'a', password: '1' } as User]);
try {
await service.signup('asdf@asdf.com', 'asdf');
} catch (err) {
done();
}
});
6条答案
按热度按时间ddarikpa1#
您正在合并“异步/等待”和“完成”。
使用asnyc/await或done。
或使用done格式
qc6wkl3g2#
对于jest的最后一个版本,你不能同时使用'async/await,promise和done。
其解决方案是
根据侦听异常更改
BadRequestException
jv4diomz3#
在v27之前,jest默认使用jest-jasmine 2。
对于版本27,jest使用jest-circus,它不支持done回调。
因此需要更改默认的testRunner。
用react-app-rewired覆盖对我很有效
6ioyuze24#
此外,如果您想同时使用这两个版本,可以将jest的当前版本降级为:26.6.3.对我来说很好,我使用的是async + done
laximzn55#
对于jest的最后一个版本,你不能同时使用'async/await,promise和done(* 测试函数不能同时接受'done'回调和返回一些东西。要么使用'done'回调,要么返回promise。*)
其解决方案是
kxe2p93d6#