如何测试应该引发错误的组件?

时间:2018-09-11 19:53:17

标签: jestjs enzyme

我的组件抛出错误(应该是

function ProblemChild() {
    throw new Error("Error thrown from problem child");
    return <div>Error</div>; // eslint-disable-line
}

我的问题是..我该如何测试?

const wrapper = mount(<ProblemChild />);

这样的事情。

expect(wrapper).toThrow()

2 个答案:

答案 0 :(得分:1)

在回调内包装挂载。像这样:

expect(() => mount(<ProblemChild />)).toThrow()

答案 1 :(得分:0)

您可以执行以下操作:

it('should throw an error when there is an error', () => {
  try {
    wrapper.setState({error: true});
    expect(true).toBe(false); //Fail test if no error is thrown
  } catch (error) {
    expect(error).toBe(error); //Pass test if an error is thrown
  }
});

在上面的示例中,我的状态为错误。您的函数可能被称为onClick或onChange。在这种情况下,您必须在断言之前使用simulate event