Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 在不引发异常的情况下使用Error()_Reactjs_Jestjs_Enzyme - Fatal编程技术网

Reactjs 在不引发异常的情况下使用Error()

Reactjs 在不引发异常的情况下使用Error(),reactjs,jestjs,enzyme,Reactjs,Jestjs,Enzyme,我有一个名为React的组件,它可以接受字符串或实际的错误对象 以下Jest/酶代码有效: 它“使用错误属性渲染”,=>{ 常数分量=浅; expectcomponent.text.toMatchSnapshot; expectcomponent.text.toEqual'Foobar'; }; 但是,以下情况并非如此: 它“使用新的错误属性进行渲染”,=>{ 常量错误=新错误'Foobar'; 常数分量=浅; expectcomponent.text.toMatchSnapshot; expe

我有一个名为React的组件,它可以接受字符串或实际的错误对象

以下Jest/酶代码有效:

它“使用错误属性渲染”,=>{ 常数分量=浅; expectcomponent.text.toMatchSnapshot; expectcomponent.text.toEqual'Foobar'; }; 但是,以下情况并非如此:

它“使用新的错误属性进行渲染”,=>{ 常量错误=新错误'Foobar'; 常数分量=浅; expectcomponent.text.toMatchSnapshot; expectcomponent.text.toEqual'Foobar'; }; 新的错误行导致RangeError:超出了最大调用堆栈大小

我试着把它包起来,但它会吞下一切

我已经试着按expect=>{…}的方式运行了它,但是我无法让它运行断言——似乎只有当您想将它导入到.toThrow时,它才真正起作用

以下内容一开始看起来很有希望,但实际上并没有向catch中的error参数发送任何内容:

it('renders with new Error() error prop', () => {
  try {
    new Error('Foobar');
  }
  catch (error) {
    const component = shallow(<Error error={error} />);
    expect(component.text()).toMatchSnapshot();
    expect(component.text()).toEqual('Foobar');
  }
});

有什么想法吗?提前感谢。

在您的测试文件中尝试以下内容:

import Error as ErrorComponent from './error/component.jsx'; //Or wherever this is
您还可以尝试以不同的方式命名错误组件


希望这能有所帮助。

这里的新错误“Foobar”基本上是调用您的错误组件,正如下面的答案所建议的,重命名您的错误组件以避免覆盖javascript错误。啊,我太笨了。这是漫长的一天,一周。。。月谢谢我只需要从导入ErrorComponent,因为我没有使用TSP还有第二个问题:我的组件在某个点本身抛出了一个错误,导致了一个无限的循环,不用担心,试着在VSCode中安装一些代码助手工具,这样你就不必担心这些问题。我有很多东西可能会发现变量冲突,但可能它有一个问题,特别是错误/shugh