Код:
import { createUser } from '../services';
...
...
handleFormSubmit = () => {
this.setState({ loading: true });
createUser()
.then(() => {
this.setState({
loading: false,
});
})
.catch(e => {
this.setState({
error: e,
});
});
};
Тест:
it('rejects...', () => {
const Container = createUserContainer(CreateUser);
const wrapper = shallow(<Container />);
return wrapper.instance().handleFormSubmit()
.catch(e => {
console.log("State: ", wrapper.state());
expect(e).toEqual('error');
});
});
Макет
export const createUser = function() {
return new Promise((resolve, reject) => {
reject('error');
});
};
Тест вынуждает код переходить к уловке в методе.Таким образом, для состояния устанавливается значение «ошибка».
Но в моем тесте он не выполняет то, что я ожидаю, и жду, пока Обещание не отклонится, прежде чем проверять изменение состояния.Я не уверен, что здесь попробовать, я должен использовать async / await?
Так что это метод createUser, которого я хочу ждать, но я не уверен, что моя реализация допускает это