javascript - 针对 Jest 中抛出的错误对象进行断言

标签 javascript reactjs jestjs

我有一个抛出对象的函数,我如何断言开 Jest 中抛出了正确的对象?

it('should throw', () => {

  const errorObj = {
    myError: {
      name: 'myError',
      desc: 'myDescription'
    }
  };

  const fn = () => {
    throw errorObj;
  }

  expect(() => fn()).toThrowError(errorObj);
});

https://repl.it/repls/FrayedViolentBoa

最佳答案

如果您想测试自定义错误的内容(我认为这就是您想要做的)。您可以捕获错误,然后执行断言。

it('should throw', () => {
 let thrownError;

 try {
   fn();
 }
 catch(error) {
  thrownError = error;
 }

 expect(thrownError).toEqual(expectedErrorObj);
});

正如 Dez 所建议的,如果您不抛出 javascript Error 对象的实例,toThrowError 函数将不起作用。但是,您可以通过修饰错误对象的实例来创建自定义错误。

例如

let myError = new Error('some message');
myError.data = { name: 'myError',
                 desc: 'myDescription' };
throw myError;

一旦您在测试中发现错误,您就可以测试错误的自定义内容。

expect(thrownError.data).toEqual({ name: 'myError',
                                   desc: 'myDescription' });

关于javascript - 针对 Jest 中抛出的错误对象进行断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48707111/

相关文章:

OOP 样式的 Javascript setInterval() 不起作用

javascript - 以编程方式绑定(bind)事件 (SyntheticEvent)

javascript - Next.js with Typescript : Invalid hook call. Hooks 只能在函数组件的主体内部调用

reactjs - fireEvent.keyDown 在我的 Jest + React 测试库测试中没有按预期工作

javascript - 如何使用代码图调试 Jest 测试

javascript – 如何在 100vh 滚动后淡出一个类?

Javascript 将每个项目包装在一个数组中,并在 View 中使用 anchor 标记

从变量获得的 javascript 正则表达式在测试 : "is not a function" 时给出错误

javascript - 如何在 React Native 中渲染对象?

javascript - 无法从 'react-native-implementation.js' 找到模块