对于在 React Native 上使用酶的浅层测试,this.refs 未定义

IT技术 reactjs react-native jestjs enzyme
2021-05-03 21:17:43

我有一个具有 2 个输入文本字段的组件。

componentDidMount()我调用方法中 this.refs.password.focus();

我的内部有一些棘手的业务逻辑,componentDidMount但是在进行浅层单元测试时componentDidMount,出现错误

无法访问未定义的密码

我检查了浅层组件的实例,发现它this.refsundefined我的问题是我们如何通过测试来设置它?

Shallow 有第二个参数,我们可以传递它作为上下文,我们可以在其中设置单元测试的上下文,但它似乎什么也没做。

任何有关这方面的帮助将不胜感激。

2个回答

解决此问题的最简单方法是refs通过实例设置

const component = shallow(<Component />)
const instance = component.instance()

instance.refs = {
  password: {
    getRenderedComponent: jest.fn(() => ({
      focus: jest.fn
    }))
  }
}