Say У меня есть Redux подключенный реагировать компонент, как это:Лучший способ проверить Redux действия отказа в Redux приложения
class App extends Component {
renderErrorMessage() {
const { errorMessage } = this.props;
if(!errorMessage) {
return;
}
// render error message
}
render() {
return (
<div>
<Menu location={this.props.location.pathname}/>
<div className="jumbotron">
{ this.renderErrorMessage() }
{ this.props.children }
</div>
</div>
);
}
};
function mapStateToProps(state) {
return {
errorMessage: state.get('errorMessage')
};
};
App.propTypes = {
errorMessage: PropTypes.string,
children: PropTypes.node,
resetErrorMessage: PropTypes.func.isRequired
};
export default connect(mapStateToProps, {
resetErrorMessage
})(App);
И у меня есть действие отказа, как:
export function fetchResultsFailure(error) {
return {
type: FETCH_RESULTS_FAILURE,
error
}
}
И мой редуктор выглядит так:
function errorMessage(state = null, action) {
const { type, error } = action;
if(type === ActionTypes.RESET_ERROR_MESSAGE) {
return null;
} else if (error) {
return action.error;
}
return state;
};
Я использую это с помощью redux-saga и можно назвать состояние отказа например:
function* fetchEntity(entity, apiFn) {
yield put(entity.request());
const { response, error } = yield call(apiFn);
if(response) {
yield put(entity.success(response));
} else {
console.log(error);
yield put(entity.failure(error));
}
};
Как я могу проверить это? Я хотел бы протестировать этот конец до конца и вернуть сообщение об ошибке
Вы имеете в виду единичный тест? – Vivian