3
我使用Enzyme
來測試我的反應和redux部分。我已經閱讀並發現它也是編寫組件集成測試的良好實踐。 所以,這很簡單,因爲我必須調用動作創建者並根據商店檢查其更新的值,但我有一些異步操作返回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
你正在這裏的商店測試,看看這裏使用的'mockstore' – anoop
啊錯過了。 – Umair