在componentDidMount
中,我添加了一个侦听器来处理Android向后导航,并希望围绕其行为添加测试。我首先如何测试componentDidMount
中的内容,其次我将如何模拟单击后退按钮。
class Component extends React.Component {
componentDidMount () {
BackHandler.addEventListener('hardwareBackPress', () => {...})
}
}
最佳答案
有两种方法可以解决此问题:
首先,您可以假设componentDidMount
和BackHandler.addEventListener
将起作用。那将使您仅测试功能。如果走那条路,您可能想在addEventListener
中注册一个命名函数而不是箭头函数,以便可以在测试中将其定位。
如果出于某种原因,您想测试整个生命周期,那么Facebook实际上有一个模拟的BackHandler,可以让您模拟反向按下:
https://github.com/facebook/react-native/blob/master/Libraries/Utilities/mocks/BackHandler.js
您只需要将该模型导入到您的测试中,将该组件安装在测试渲染器中,然后触发mockBackPress
并观察是否调用了您的函数即可。