3
Enzyme
を使用して、反応部分と還元部分をテストしています。私は読んだことがあり、コンポーネントの統合テストを作成するのがよい方法であることがわかりました。 アクションクリエーターを呼び出してストアに対する更新値を確認する必要がありますが、私はdispatch
アクションを返す非同期アクションがいくつかあります。React-redux:統合テストを書く方法
login.actions.js
export function loginUser(credentials) {
return dispatch => {
dispatch(action.loginRequest());
return axios({
method: 'post',
url: `${api}/login`,
data: {
email: _.trim(_.get(credentials, 'email')),
password: _.get(credentials, 'password')
}
})
.then(response => {
const { data } = response;
if (_.isEqual(_.get(response, 'status'), 200)) {
dispatch(action.loginSuccess(data));
}
})
.catch(err => {
dispatch(action.loginError(err));
});
};
}
login.actionCreators.js
export function loginRequest() {
return {
type: types.LOGIN_REQUEST
};
}
export function loginSuccess(payload) {
return {
type: types.LOGIN_SUCCESS,
payload
};
}
export function loginError(payload) {
let error;
switch (_.get(payload, 'response.status')) {
case 422: {
error = 'Invalid Credentials';
break;
}
case 401: {
error = 'Invalid user';
break;
}
case 403: {
error = 'Account not confirmed';
break;
}
default:
error = 'Something went wrong';
}
return {
type: types.LOGIN_ERROR,
error
};
}
ので、完全な統合テストを実行するために、私はlogin.actions.js
をテストする必要があります同様にディスパッチは普通のオブジェクトを返すので、私の場合はディスパッチ関数を返しています。どうすればそれらをテストできますか?
同じシナリオに従えば、ストアの状態が更新されているかどうかをテストする必要がありますか? – Umair
あなたはここの店でテストしています、ここで使用されている '模造店 'を参照してください – anoop
ああ、それを逃した。 – Umair