Javascript 如何在React Native中测试异步组件DidMount?

Javascript 如何在React Native中测试异步组件DidMount?,javascript,reactjs,react-native,jestjs,async.js,Javascript,Reactjs,React Native,Jestjs,Async.js,我有一个SplashContainer,它带有一个异步组件didmount export class SplashContainer extends Component { async componentDidMount() { let token = await AsyncStorage.getItem('@XXX:token') if (token !== null) { await this.props.setTokenAvalability(true)

我有一个SplashContainer,它带有一个
异步组件didmount

export class SplashContainer extends Component {

  async componentDidMount() {
    let token = await AsyncStorage.getItem('@XXX:token')
    if (token !== null) {
      await this.props.setTokenAvalability(true)
      await this.props.getUserDetails()
    }
    await this.props.navToNextScreen()
  }

  render() {
    return <Splash />
  }
}

function mapDispatchToProps(dispatch) {
  return {
    navToNextScreen: () => dispatch(navToNextScreen(...)),
    setTokenAvalability: (status) => dispatch(setTokenAvalability(status)),
    getUserDetails: () => dispatch(getUserDetails()),
  }
}
export default connect(null, mapDispatchToProps)(SplashContainer);
2。如何为
AsyncStorage.getItem()


谢谢,

好吧,componentDidMount不是异步函数,我想这里唯一可以做的就是使用
componentDidUpdate
方法,它将为您提供组件的更新

阅读
this.props.navToNextScreen()
函数,我认为您误解了redux在这里的工作方式

您可能不需要等待navToNextScreen函数,它应该只发送一个全局事件,您的主要组件应该侦听存储中的更改以显示/隐藏初始屏幕

it('test SplashContainer', () => {
  const store = mockStore({});
  const props = {
    dispatch: store.dispatch
  }
  const tree = renderer.create(
    <SplashContainer {...props}/>
  ).toJSON();
  const expectedAction = [
    ...
  ]
  expect(store.getActions()).toEqual(expectedAction);
});