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

Baj*_*jju 3 reactjs jestjs react-native enzyme

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

componentDidMount()我打电话的方法中 this.refs.password.focus();

我的内部有一些棘手的业务逻辑,componentDidMount但在进行浅单元测试时componentDidMount,我得到了错误

无法访问未定义的密码

我检查了浅组件的实例,看到它this.refs未定义的.我的问题是我们如何通过测试来设置它?

Shallow有一个第二个参数,我们可以传递这个参数作为上下文,我们可以设置单元测试的上下文,但它似乎什么都不做.

这个领域的任何帮助将受到高度赞赏.

Baj*_*jju 9

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

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

instance.refs = {
  password: {
    getRenderedComponent: jest.fn(() => ({
      focus: jest.fn
    }))
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 如果在组件安装期间使用ref怎么办?就我而言,当我执行初始浅渲染时,我的测试在第1行失败。我什至没有机会嘲笑裁判... (3认同)