我的组件抛出错误(应该是)
function ProblemChild() {
throw new Error("Error thrown from problem child");
return <div>Error</div>; // eslint-disable-line
}
我的问题是..我该如何测试?
const wrapper = mount(<ProblemChild />);
这样的事情。
expect(wrapper).toThrow()
答案 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。