如何在Vitest中让Promise断言失败时显示自定义错误信息
在Vitest中让Promise解析断言失败时显示自定义错误消息
当你使用await expect(expected, "custom message").resolves.toBeUndefined()断言Promise解析时,若Promise被拒绝,传入的自定义消息不会显示,只会返回默认提示。要解决这个问题,你可以用以下几种方式:
方法1:使用withContext()附加自定义消息
Vitest提供了.withContext()方法,能将自定义上下文信息添加到断言失败的输出中,这是最简洁的方案:
await expect(expected) .withContext('自定义错误消息:Promise未正常解析') .resolves.toBeUndefined();
当Promise被拒绝时,错误信息会包含你设置的自定义内容。
方法2:手动捕获异常并抛出带自定义消息的错误
通过try/catch包裹断言逻辑,捕获失败后重新抛出包含自定义消息的错误,还可以保留原错误信息:
try { await expect(expected).resolves.toBeUndefined(); } catch (error) { throw new Error(`自定义错误消息:${error.message}`); }
方法3:直接处理Promise并断言
绕开resolves语法,手动等待Promise完成后判断状态,再抛出自定义错误:
try { await expected; // 若Promise成功解析,可添加额外断言逻辑 expect(undefined).toBeUndefined(); } catch (err) { throw new Error('自定义错误消息:Promise被拒绝,未按预期解析'); }
内容的提问来源于stack exchange,提问作者Blee
相关产品推荐
相关产品推荐

