Ложный вызов API для вызова определенное количество раз с шутками и аксиосами - PullRequest
0 голосов
/ 23 января 2020

У меня есть функция, которая устанавливает вызов API, а затем передает эту функцию в функцию повтора, которая выполняет вызов и повторяет вызов, до 5 раз, если он не удался.

public someAPICall() {
        const promiseFunction = () => axios.post('/some/path/', {
            headers: {
                //some headers in here
            },
        });
        return executePromise(promiseFunction, 5);
}

private async executePromise(promiseFunction, numberOfTimesToTryAgain) {
    try {
        // execute api call
        return await promiseFunction();
    }
    catch (error) {
        if (retries > 0) {
            // try api call again if it has failed less than 5 times
            return executePromise(promiseFunction, --numberOfTimesToTryAgain);
        }
        return error;
    }
}

I Я хотел бы проверить someAPICall и посмеяться над результатами вызова топора ios, чтобы потерпеть неудачу определенное количество раз, используя шутку. Я могу смоделировать вызов ax ios .post в моем тестовом файле, выполнив следующее:

jest.mock('axios');
mockPost = jest.fn(() => {});
(<jest.Mock>axios.create) = jest.fn(() => {
  return {
    post: mockPost
  };
});

Но как я могу сделать так, чтобы почтовый вызов не удался, например, 3 раза, а затем успешно?

1 Ответ

0 голосов
/ 23 января 2020

Понял:

 mockPostFailTwice = jest.fn()
.mockImplementation(() => {
  return 200;
})
.mockImplementationOnce(() => {
  throw 500;
})
.mockImplementationOnce(() => {
  throw 500;
});

Это приводит к тому, что при выполнении записи первые 2 раза выдается ошибка 500, а в третье возвращается 200.

...