Jest test Redux Saga Невозможно прочитать свойство 'then' из неопределенного при отправке - PullRequest
0 голосов
/ 15 апреля 2020

Я видел пару похожих записей в переполнении стека, но это не совсем относится к этой проблеме, с которой я сталкиваюсь. Мы используем 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));
            });
        });

 ...
}

Есть идеи, почему мы это видим? Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 21 апреля 2020

Закончен метод отправки насмешек, как предложил xdeepakv.

...