2017-03-02 12 views
0

私はここに二つの質問を持っていますasync componentDidMountReact Nativeで非同期ComponentDidMountをテストするにはどうすればよいですか?

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); 

とSplashContainerを持っています。

。私がテストしたかったsetTokenAvalability and getUserDetailsが発送されているかどうかは分かりません。私は以下のように、非同期/待機がないかどうかをテストする方法を知っています。

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); 
}); 

AsyncStorage.getItem()

おかげで、

答えて

0

の値をスタブする方法まあ、componentDidMountは非同期関数ではありません、私が思うに、あなたがここで行うことができる唯一のことは、あなたのコンポーネントのアップデートを提供しますcomponentDidUpdate方法を使用することです。

this.props.navToNextScreen()の機能を読んで、私はここでreduxがどのように機能するか誤解していると思います。

navToNextScreen関数を待つ必要はありません。グローバルイベントを送信するだけで、メインコンポーネントは店舗の変更を聞いてスプラッシュ画面を表示/非表示にする必要があります

関連する問題