componentDidMount中,我添加了一个侦听器来处理Android向后导航,并希望围绕其行为添加测试。我首先如何测试componentDidMount中的内容,其次我将如何模拟单击后退按钮。

class Component extends React.Component {
  componentDidMount () {
    BackHandler.addEventListener('hardwareBackPress', () => {...})
  }
}

最佳答案

有两种方法可以解决此问题:

首先,您可以假设componentDidMountBackHandler.addEventListener将起作用。那将使您仅测试功能。如果走那条路,您可能想在addEventListener中注册一个命名函数而不是箭头函数,以便可以在测试中将其定位。

如果出于某种原因,您想测试整个生命周期,那么Facebook实际上有一个模拟的BackHandler,可以让您模拟反向按下:

https://github.com/facebook/react-native/blob/master/Libraries/Utilities/mocks/BackHandler.js

您只需要将该模型导入到您的测试中,将该组件安装在测试渲染器中,然后触发mockBackPress并观察是否调用了您的函数即可。

09-25 18:15