您好,我有一个关于在JEST中编写集成测试的问题。我要端对端地测试以下流程。
当然,处理过程需要一些随机时间,所以我不确定何时结束。此外,api不会公开任何端点来检查当前是否正在运行某些处理。我幼稚的方法是多次轮询服务以获取结果,然后在两者之间等待。但这当然不是最佳的。所以我的问题是是否有更好的方法。而且,如果我必须等待测试,那么达到此目标的最佳方法是什么。
这是我的JEST测试:
test('Test some api', async () => {
// ...
// post message into queue - message processing started
// ...
// retry get operation 10 times
let getResult: any = undefined;
for (let i = 0; i < 10; i += 1) {
getResult = await axios.get('http://example.com/messages/some_uuid', headers);
if (getResult.data && getResult.data.length > 0) {
break;
}
// timeout ?? ... wait a little after each iteration
}
expect(getResult).toMatchObject({ status: 200 });
});