我正在使用Jest和酶对这个非常简单的组件render()运行单元测试
render() {
return (<Input
id='foo'
ref={input => { this.refInput = input }}
/>)
}
it('should render Input', () => {
wrapper = shallow(<Component />)
expect(wrapper.find(Input)).toHaveLength(1)
})我还使用了Jest的覆盖范围选项,我看到,这行代码
ref={input => { this.refInput = input }}不在我的测试范围内。我必须做什么才能获得这个示例组件的完整单元测试?
发布于 2018-01-04 12:35:04
引用被附加到组件的一个实例上,因此您必须使用mount来获取组件的一个实例。
要测试ref,请添加以下行
expect(wrapper.instance().refInput).toBeTruthy();最终结果:
render() {
return (<Input
id='foo'
ref={input => { this.refInput = input }}
/>)
}
it('should render Input', () => {
const wrapper = mount(<Component />);
expect(wrapper.find(Input)).toHaveLength(1)
expect(wrapper.instance().refInput).toBeTruthy();
})发布于 2020-06-08 21:03:08
我这样解决了这个问题:
const ref = React.createRef();
const props = { register: jest.fn(params => ref), label: "label text", ...params };
let wrapper = mount(
<ThemeProvider theme={theme}>
<Input {...props} />
</ThemeProvider>
);
expect(wrapper.find(Entity).getElement().ref).toBe(ref);我在输入中有实体组件,它接收ref函数。
https://stackoverflow.com/questions/48088489
复制相似问题