Я видел пару похожих записей в переполнении стека, но это не совсем относится к этой проблеме, с которой я сталкиваюсь. Мы используем Jest для тестирования, и redux-saga для хранения.
Недавно мы попытались отойти от Жасмин и направиться к Шуту. Этот тест работал для Жасмин, но не для Джест.
Вот неправильный тест,
describe('componentWillReceiveProps method', () => {
it('should call dispatch if entityType is changed', (done) => {
const {wrapper, props} = setup();
wrapperInstance = wrapper.instance();
wrapperInstance.isPagePoppedFromHistory = false;
setTimeout(() => {
expect(props.dispatch).toHaveBeenCalled();
done();
}, 300);
wrapperInstance.UNSAFE_componentWillReceiveProps(Object.assign({}, props, {
entityType: {key: ENTITY_TYPE_HCO}
}));
});
});
получена ошибка
Error: Uncaught [TypeError: Cannot read property 'then' of undefined]
at reportException (node_modules/jsdom/lib/jsdom/living/helpers/runtime-script-errors.js:62:24)
at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:645:7)
at ontimeout (timers.js:498:11)
at tryOnTimeout (timers.js:323:5)
at Timer.listOnTimeout (timers.js:290:5) TypeError: Cannot read property 'then' of undefined
at UNSAFE_componentWillReceiveProps.setTimeout (/index.js:294:11)
at Timeout.callback [as _onTimeout] (/Window.js:643:19)
at ontimeout (timers.js:498:11)
at tryOnTimeout (timers.js:323:5)
at Timer.listOnTimeout (timers.js:290:5)
строки кода компонента, нарушающие эти
componentWillReceiveProps(){
...
setTimeout(() => {
dispatch(fetchTableResults(resultsLimit, filterParams, qString, currentOrderOption,
undefined, undefined, resultBounds))
.then(() => {
dispatch(changePageNumber(nextPage));
});
});
...
}
Есть идеи, почему мы это видим? Любая помощь будет принята с благодарностью.