如果Jest测试失败,则多次运行它

thtygnil  于 12个月前  发布在  Jest
关注(0)|答案(2)|浏览(148)

我正在使用Jest测试一些API端点,但是这些端点可能会在某些时候失败,因为网络问题而不是我的程序错误。所以我想延迟多次(例如5次)再次测试,如果所有这些尝试都失败了,Jest应该报告失败。
实现这一点的最佳方法是什么?Jest或其他库提供了解决方案吗?或者我应该用setInterval之类的东西编写自己的程序?

wnrlj8wa

wnrlj8wa1#

对于测试来说,你不应该进行网络调用,因为它们会减慢你的测试速度。此外,你可能会与一个外部API进行通信,而这个外部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');
});


试着多读一些关于嘲笑的笑话,以便更好地理解

blpfk2vs

blpfk2vs2#

我原则上同意Ujwal所说的,但有时你必须做你必须做的,对吗?
each测试文件中,在下面插入一行以允许多次尝试。该行应在任何特定测试之外(即describe(...)it(...)之外)

jest.retryTimes(1);

字符串
参考:https://stackoverflow.com/a/71599782/6217734

相关问题