【发布时间】:2020-02-21 09:37:30
【问题描述】:
如何在测试前通过间隔请求? 我尝试了 2 种方法来重试请求,但都失败了;
我需要上传一个文件,等待导入成功
第一步,我将文件上传到我在 cypress 中的服务器
before( ()=> {
//my custom POST command
cy.form_request(url, data)
.then(({id}) => {
然后等待上传文件的id
check_It_Till_Success_It(id);
})
})
然后将接收到的 id 传递给一个新请求以验证其在服务器上的状态,并且需要重复请求直到文件处理完成。 在下面的解决方案中它说
CypressError: cy.wait() 只接受路由的别名。 别名:“check_it_request”与路由不匹配。
function check_It_Till_Success_It(id) {
function checkRequest() {
cy.request("GET", "http://localhost:28080/admin/api/catalog/import/status/" + id)
.then(({status}) => {
if (status === "FINISHED" || status === "FAILED") {
clearInterval(check_It);
} else {
console.log('retry one more time');
}
}).as('check_it_request');
cy.wait("@check_it_request");
}
checkRequest();
const check_It = setInterval(checkRequest, 1000);
}
或者这是我通过递归请求的另一个解决方案:
function check_It_Till_Success_It(id) {
return (
cy.request("GET", BASE_URL + "/admin/api/catalog/import/status/" + id)
.then(({status}) => {
if (status === "FINISHED" || status === "FAILED") {
console.log('success');
} else {
console.log('retry one more time');
setTimeout(() => check_It_Till_Success_It(id), 1000)
}
})
)
}
但它会引发错误:
未捕获的 CypressError:Cypress 检测到您从一个命令返回了一个 Promise,同时还在该 Promise 中调用了一个或多个 cy 命令。
我做错了什么?
【问题讨论】:
标签: cypress