我使用了nestjs(6.5.0)和jest(24.8),并且有一个抛出错误的方法:
public async doSomething(): Promise<{ data: string, error?: string }> {
throw new BadRequestException({ data: '', error: 'foo' });
}
如何编写一个单元测试来检查我们是否得到了预期的异常和预期的数据呢?显而易见的解决方案是:
it('test', async () => {
expect(await userController.doSomething())
.rejects.toThrowError(new BadRequestException({ data: '', error: 'foo'});
});
但这不起作用,因为new BadRequestException()
创建了一个具有不同调用堆栈的对象。
2条答案
按热度按时间6yoyoihd1#
与jest documentation中的示例相比,这里可能有两个问题。
await
应在expect
参数之外rejects
意味着抛出了一个错误,因此您要测试是否相等例如:
30byixjq2#
回答我自己的问题:
使用自定义匹配器(见下文),测试可以编写为:
自定义匹配器: