2016-08-23 4 views
1

私はReactiveDictを使用するアプリを開発中です。私のプロジェクトは、Mantra仕様のMeteorで構築されています。ReactDictからReactDictの中のAction Propsを酵素でテストする方法

私はという名前の反応成分を持っています。コンセプトは、コンポーネントレンダリング時にエラーがないため、コンポーネントがレンダリングされるときにReactiveDict状態がクリアされることです。それはうまくいく。私はこのコードをコンテナに持っています:

export const depsMapper = (context, actions) => ({ 
    context:() => context, 
    loginUser:actions.login.loginUser, 
    clearState: actions.globals.clearState 
}); 

これはコンポーネントが実行するアクションです。私のコンポーネントで:

componentWillMount(){ 
    this.props.clearState('LOGIN_ERROR_MESSAGE'); 
} 

最後に、私のテストコードでは、私が持っている:

it.only('should render a <Form/> component',() => { 
    const loginWrapper = shallow(<Login/>); 
    expect(loginWrapper.find(Form)).to.have.length(1); 
}); 

私はnpm testを実行すると、それはthis.props.clearStateは関数ではありません、と言います。この問題を解決するにはどうすればよいですか?前もって感謝します。

答えて

0

アンマウント時にエラーをクリアする方が便利だと思いますか? ReactiveDictは永続的ではないので、アンマウント時に状態をクリアする - ページをリフレッシュするかコンポーネントをアンマウントすると、エラーは既にクリアされます。したがって、マウントする前に状態をクリアする理由はありません。通常、あなたはこのようなことをmantrajsで行います:

export const composer = ({context, clearState}, onData) => { 
    const {LocalState} = context(); 
    const error = LocalState.get('LOGIN_ERROR_MESSAGE'); 
    onData(null, {error}); 

    // return the function that clears the state and the state gets reset on unmount 
    return clearState; 
}; 

export const depsMapper = (context, actions) => ({ 
    context:() => context, 
    loginUser: actions.login.loginUser, 
    clearState: actions.globals.clearState 
}); 

export default composeAll(
    composeWithTracker(composer), 
    useDeps(depsMapper) 
)(Login); 
関連する問題