Javascript Jest异常同时匹配类型和消息

Javascript Jest异常同时匹配类型和消息,javascript,jestjs,Javascript,Jestjs,我想编写一个测试异常,其中类型和消息都很重要 函数foo(){ 抛出新的自定义错误(“foobar”); } 有没有比调用函数两次更好的测试方法 test(“应该抛出带有正确消息的CustomError”,()=>{ expect(()=>foo()).toThrow(CustomError); expect(()=>foo()).toThrow(“foobar”); }); < /代码> 如果您想要这个精确的错误,请考虑使用以下内容: test("should throw a CustomE

我想编写一个测试异常,其中类型和消息都很重要

函数foo(){
抛出新的自定义错误(“foobar”);
}
有没有比调用函数两次更好的测试方法

test(“应该抛出带有正确消息的CustomError”,()=>{
expect(()=>foo()).toThrow(CustomError);
expect(()=>foo()).toThrow(“foobar”);
});

< /代码> 如果您想要这个精确的错误,请考虑使用以下内容:

test("should throw a CustomError with the right message", () => {
    expect(() => foo()).toThrow(new CustomError("foobar");
});

如前所述,您请求的功能在中被请求并被拒绝。但是,它被添加到单独的jest扩展项目中。太棒了

您的示例代码如下所示:

test(“应该抛出带有正确消息的CustomError”,()=>{
expect(()=>foo()).toThrowWithMessage(自定义错误,“foobar”);
});
有关详细信息,请参阅。请注意,除了简单地安装jest extended之外,还需要一些配置来使用它们的匹配器。有关详细信息,请参阅


如果您不喜欢使用jest extended,那么您可以始终将它们的匹配器复制到您的代码库中,前提是您可以接受。否则,我认为您提供的示例是检查错误类和消息的好方法。

链接文档指出,这只测试
.message
属性,而不是类型。如果我更改为
抛出新错误(“foobar”)
,则期望值将通过。看起来这是当前唯一的方法来测试它是否既是
自定义错误的一个实例,并且有消息
foobar