javascript - 在 for 循环中执行 cy.request
问题描述
我正在尝试编写代码,让用户指定通过赛普拉斯创建的项目数量(我们的某些测试需要这种灵活性)。
function createSomeItems(itemCount, headers)
{
item: { id: 0, field1: 123, field2: "test text!"};
let chain;
for (let i = 0; i < itemCount; i++)
{
chain = cy.request({method: 'POST', url: '/create-item', body: item, headers: headers});
item.id += 1;
}
return chain;
}
问题是应用程序由于项目的重复 ID 而遇到错误。从我所看到的,cy.request
当我认为它确实执行时,调用实际上并没有执行。
我对赛普拉斯还是很陌生(这是我 15 年来第一次使用 JavaScript),所以我不知道如何解决这个问题。
我知道我可以将n调用cy.request().then()...
显式链接在一起,尽管这会使测试变得庞大且难以阅读(特别是对于需要较大n值的测试用例),并且我试图保持代码简洁紧凑。
解决方案
对于任何好奇的人,我想出了一个返回命令链的解决方案(与Cypress 的示例不同):
function createSomeItems(itemCount, headers)
{
let item = { id: 0, field1: 123, field2: "test text!"};
function recursiveRequester(itemNumber, chain)
{
item.my_id = itemNumber;
return chain.then(() => {
return cy.request({method: 'POST', url: '/create-item', body: item, headers: headers});
.then(() => {
if (itemNumber === itemCount) {
return chain;
}
else {
return recursiveRequester(itemNumber + 1, chain);
}
})
})
}
return recursiveRequester(1, functionThatDoesOtherSetupwork());
}
推荐阅读
- c# - XAML 调整窗口大小和窗口内的所有元素
- android-studio - 无法在 Android Studio 中的现有颤振项目中打开不可为空的功能
- c - 如何让我的函数打印真假
- python - Python 索引错误:列表
- python - Python 中关于 re.split() 的正则表达式 [] vs ()
- css - 将搜索按钮添加到文本输入
- selenium-chromedriver - Capybara 测试 - JS 资产中没有端口
- c - 睡眠不工作,无效参数错误
- javascript - 每次单击淡入淡出按钮都会使背景框不断淡入淡出
- python - android kivy 的错误生成器导出 apk