运行 Jest 测试多次失败

Run Jest tests multiple times if it fails

我正在使用 Jest 测试一些 API 端点,但这些端点有时可能会失败,因为网络问题而不是我的程序错误。所以我想延迟再次测试多次(例如 5 次),如果所有这些尝试都失败了,Jest 应该报告失败。

实现此目标的最佳方法是什么? Jest 或其他库是否提供解决方案?或者我应该用 setInterval?

之类的东西编写自己的程序

对于测试,理想情况下您不应该进行网络调用,因为它们会减慢您的测试速度。此外,您可能正在与外部 API 通信,理想情况下不应成为测试代码的一部分。正如您已经观察到的那样,也可能导致假阴性。您可以执行如下操作:

async function getFirstMovieTitle() {
  const response = await axios.get('https://dummyMovieApi/movies');
  return response.data[0].title;
}

为了测试上面的网络调用,你应该在你的测试中模拟你的 axios get 请求。要测试上面的代码,你应该

jest.mock('axios');

it('returns the title of the first movie', async () => {
  axios.get.mockResolvedValue({
    data: [
      {
        title: 'First Movie'
      },
      {
        title: 'Second Movie'
      }
    ]
  });

  const title = await getFirstMovieTitle();
  expect(title).toEqual('First Movie');
});

尝试阅读更多关于开玩笑的嘲笑以更好地理解