📅  最后修改于: 2023-12-03 15:12:28.226000             🧑  作者: Mango
这个错误通常在使用酶(Enzyme)创建React组件测试时发生。它是由于渲染的React组件上没有名为"孩子"(children)的属性。这通常发生在下列情况中:
wrapper.children()
方法,此时就会导致错误。以下是一些解决此错误的技巧:
在测试代码中,检查要渲染的组件上是否存在children属性,如下所示:
it('renders some text', () => {
const wrapper = shallow(<MyComponent />);
expect(wrapper.prop('children')).toEqual('some text');
});
如果组件没有children属性,则应该检查代码是否正确传入props。
在ParentComponent测试代码中,检查在渲染ChildComponent时是否将它作为一个prop传入,以确保ChildComponent可以读取它。
it('renders ChildComponent', () => {
const wrapper = shallow(<ParentComponent />);
expect(wrapper.find(ChildComponent).length).toEqual(1);
expect(wrapper.find(ChildComponent).prop('someProp')).toEqual('someValue');
});
如果ParentComponent没有正确传递prop,则应该更改代码,以便将ChildComponent所需的prop传递给它。
在测试编写时,要确保不要意外地调用了不适当的方法,如wrapper.children()
。如果组件中没有children属性,这将导致Enzyme抛出错误。
it('does not call wrong methods', () => {
const wrapper = shallow(<MyComponent />);
expect(() => wrapper.children()).toThrow();
});