Тестовые случаи, когда ошибки Ax ios нужно обрабатывать по-разному, используя Jest - PullRequest
0 голосов
/ 04 мая 2020

Предполагая, что у меня есть следующая функция, в которой я хочу обрабатывать разные топоры ios ошибочные ответы по-разному.

  async fetchData() {
    const data = {...};

    const response = await axios.post('endpoint_here', data)
      .catch((error) => {
        if (error.code === SomeKindOfError) {
          throw new SomeKindOfError(error.message);
        }

        if (error.code === AnotherKindOfError) {
          throw new AnotherKindOfError(error.message);
        }

        throw new Error(error.message);
      });

    return response.data;
  }

Как я могу проверить все эти разные случаи в моем тесте с использованием Jest ?
На данный момент мой тест таков:

test('test SomeKindOfError', async () => {
  axios.post.mockRejectedValueOnce(new SomeKindOfError('There was an error.'));

  await expect(fetchData())
    .rejects
    .toThrowError(new SomeKindOfError('There was an error.'));
});

Вышеприведенный тест является проходным, но он не очень близок к тому, каким должен быть правильный тест для этой функции.
Я бы хотел иметь возможность проверить, что такое ошибка, возвращаемая Ax ios, и, соответственно, проверить, что мои собственные ошибки были выброшены.
В идеале, это способ высказать ответ об ошибке Axe ios, который позволит мне охватить все различные случаи в моих тестах, что-то вроде следующего:

  test('test SomeKindOfError', async () => {
    axios.post.mockImplementation(() => Promise.reject({
      error: { code: SomeKindOfError.code },
    }));

    await expect(fetchData())
      .rejects
      .toThrowError(new SomeKindOfError('There was an error.'));
  });


1 Ответ

0 голосов
/ 07 мая 2020

В конце концов, решение было таким простым:

test('test SomeKindOfError', async () => {
  axios.post.mockRejectedValueOnce({ code: SomeKindOfError });

  await expect(fetchData())
    .rejects
    .toThrowError(new SomeKindOfError('There was an error.'));
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...