我发现自己想要对一个被拒绝的promise结果进行多次验证。
到目前为止,我找到的唯一方法是通过“hacking”toSatisfy
:
await expect(axios.get('<some call that throws a 40x error')).rejects.toSatisfy((axiosError) => {
expect(axiosError.response?.status).toBe(400);
expect(axiosError.response?.data).toHaveProperty('message');
expect(
(
axiosError.response?.data as {
message: string;
}
).message
).toMatch(/invalid period.*/);
return true;
});
字符串
有没有人有更好的方法来做到这一点?
正如你所看到的,它有点笨重,因为我必须在最后使用return true
,而且它不流畅,因为我没有使用toSatisfy
,因为它应该被使用。
1条答案
按热度按时间ezykj2lf1#
你试过
.catch
吗?唯一的缺点是,你应该提前指定Assert的总数,如果不是所有的
expect
在超时之前都通过了,那么测试就会失败。在我看来,这是一种比toSatisfy
更语义化的方法。字符串