我有一个可以访问 API 的 Cypress 测试。返回一个项目列表,我希望它基本上进行轮询,直到我得到正确的原因(最多 30 次)。
返回的示例是
{
"items":[
{
"reason":"incorrect"
},
{
"reason":"correct"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我有以下函数,如果返回正确的原因,它会轮询并返回响应。否则会抛出错误
function pollStatusReason(id, reason, attempts = 0) {
const url = `http://someurl/${id}`;
if (attempts > 30) throw `Too many attempts to get reason: ${reason}`;
return cy.request({
method: 'GET',
url: url,
}).then((response) => {
if (response.status != 200) {
pollStatusReason(id, reason, attempts + 1);
} else {
const items = response.body.items;
for (let i = 0; i < items.length; i++) {
if (items[i].reason …Run Code Online (Sandbox Code Playgroud)