运行 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');
});
尝试阅读更多关于开玩笑的嘲笑以更好地理解
我正在使用 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');
});
尝试阅读更多关于开玩笑的嘲笑以更好地理解