Поскольку метод onformSubmit
равен async
, вы можете использовать несколько подходов:
1 Ожидайте асинхронный метод напрямую:
it(
'should set error state when dashboard api returns error',
async () => {
const wrapper = shallow(<Dashboard />);
await wrapper.instance().onFormSubmit(event);
expect(wrapper.state('error')).toBe(errorMsg);
}
);
и отдельно проверить, что метод onFormSubmit
был вызван для submit
событие
2 Использовать таймаут с возвратом Promise
:
it(
'should set error state when dashboard api returns error',
() => {
const wrapper = shallow(<Dashboard />);
wrapper.find("form").simulate("submit", event);
return new Promise(resolve => setTimeout(resolve, 1)).then(() => {
expect(wrapper.state('error')).toBe(errorMsg);
});
},
1000
);
3 дождитесь отметки перед проверкой:
function tick() {
return new Promise(resolve => {
setTimeout(resolve, 1);
});
}
...
it('should set error state when dashboard api returns error', async () => {
const wrapper = shallow(<Dashboard />);
wrapper.find('form').simulate('submit', event);
await tick();
expect(wrapper.state('error')).toBe(errorMsg);
});
4 Использование done
обратного вызова:
it('should set error state when dashboard api returns error', done => {
const wrapper = shallow(<Dashboard />);
wrapper.find('form').simulate('submit', event);
setImmediate(() => {
expect(wrapper.state('error')).toBe(errorMsg);
done();
});
});