Ферментный тест суперагентного запроса улова - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь проверить, что в случае сбоя вызова API, часть .catch или мое обещание отправят действие.

Ниже приведен код, который я пытаюсь проверить:

const handleSubmit = () => {
    const file = attachment.current.files[0];
    let brcidListToSend;
    if (includeAllBrcids) {
      console.log('here');
      brcidListToSend = List([]);
    } else {
      brcidListToSend = brcidList;
    }
    request
      .post('/api/emailclinician/createEmail')
      .field('to', to)
      .field('subject', subjectName)
      .field('message', message)
      .field('brcidList', brcidListToSend.toJS())
      .attach('attachment', file)
      .then(res => {
        setEmailSent(true);
        dispatch(updateButtonStatus('finished'));
      })
      .catch(err => {
        dispatch(updateButtonStatus('failed'));
        setEmailSent(false);
      });
  };

и вот мой тест:

 it('Dispatches "updateButtonStatus" and calls "handleSubmit" but handles fail', async () => {

      sinon.stub(request, 'post').returns({
        field() {
          return ({
            field() {
              return ({
                field() {
                  return ({
                    field() {
                      return ({
                        attach() {
                          return new Promise((resolve, reject) => {
                            reject({
                              status: 404
                            })
                          })
                        }
                      })
                    }
                  })
                }
              })
            }
          })
        }
      });

      const expectedResult = [
        {
          type: constants.EMAIL_CLINICIAN.UPDATE_BUTTON_STATUS,
          payload: {
            status: 'started'
          }
        },
        {
          type: constants.EMAIL_CLINICIAN.UPDATE_BUTTON_STATUS,
          payload: {
            status: 'failed'
          }
        }
      ];


      const wrapper = await mount(<Provider store={fakeStore}> <CreateEmail/> </Provider>);
      wrapper.find('[data-ut="submit-button"]').simulate('submit');
      wrapper.update();

      expect(fakeStore.getActions()).to.deep.equal(expectedResult);

    });

Я протестировал деталь .then и мои тесты прошли.

Я предполагаю, что это как-то связано с тем, что мой тест заканчивается, прежде чем мой .catch успеет закончить sh.

Есть предложения? Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...