function AssertResponseCode200(request) {
cy.wait(request).then(response => {
expect(response.status).to.eq(200);
});
}
function CheckDictionaries() {
var requestUrls = [
"requestUrl1",
"requestUrl2",
"..."
];
for (let i = 0; i < requestUrls.length; i++) {
cy.route("GET", requestUrls[i]).as(`request${i}`);
AssertResponseCode200(`@request${i}`);
}
}
it("Assert dictionaries", () => {
cy.server();
CheckDictionaries();
});
CypressError: Timed out retrying: cy.wait() timed out waiting 5000ms for the 1st request to the route: 'request1'. No request ever occurred.
我想循环浏览请求并检查一切正常,并且响应代码为200。但是我被卡住了,因为唯一别名的URL是数组中的第一个URL,但是我需要
requestUrls
数组的所有元素用request${i}
作为别名。我的代码有什么问题吗,或者cypress中的路由无法用于for循环? 最佳答案
我认为您遇到的问题是,因为您每次仅等待一个请求完成,但是请求以随机顺序异步完成,因此有时您可能正在等待已经完成的请求。cy.wait()
也接受别名数组,因此您可以首先收集所有别名,然后使用单个cy.wait()
等待所有别名。
const aliases = [];
for (let i = 0; i < requestUrls.length; i++) {
aliases.push(`@request${i}`);
...
}
cy.wait(aliases);