在我的团队中,我们正试图为业务逻辑的一个非常常见的操作实现一个命令,但我在处理其实现时遇到了问题。
基本上:
我们必须找回一个 对象数组 (GET)。文章源自玩技e族-https://www.playezu.com/193164.html
对于每个对象,我们必须检索(获取)另一个 其父体内的物体.文章源自玩技e族-https://www.playezu.com/193164.html
对于每个子对象(child),我们必须 检查条件 如果它是我们想要的条件,我们检索子对象,否则我们传递null。文章源自玩技e族-https://www.playezu.com/193164.html
Q: 我该如何处理 依赖于单个API调用的多个API调用 没有跳出赛扬链?文章源自玩技e族-https://www.playezu.com/193164.html
这是我当前的实现(不起作用,但有点解释了想要的逻辑)文章源自玩技e族-https://www.playezu.com/193164.html
Cypress.Commands.add('myCommand', (sumCriteria: Function, anotherCriteria: Function) => {
// I only retrieve fathers with certain criteria
return cy.request('GET', fathersUrl).its('body').then(fatherObjects => {
return fatherObjects.filter(father => father.childs.length && father.childs.find(sumCriteria))
}).then(filteredFathers => {
filteredFathers.forEach(father => {
// For each father I retrieve a single child
const targetChildId = father.childs.find(sumCriteria).id;
// For each single child I retrieve its data and evaluate if it has the needed criteria
cy.request('GET', `${childsUrl}/${targetChildId}`)
.its('body')
.then(property => anotherCriteria(property))
})
})
提前感谢!文章源自玩技e族-https://www.playezu.com/193164.html
软件测试自学文章源自玩技e族-https://www.playezu.com/193164.html 文章源自玩技e族-https://www.playezu.com/193164.html
未知地区 1F
简化代码并应用 承诺。全部()…
Cypress.Commands.add(‘myCommand’, (sumCriteria: Function, anotherCriteria: Function) => {
return cy.request(‘GET’, fathersUrl).its(‘body’).then(fatherObjects => {
const filteredFathers = fatherObjects.filter(father => father.childs.find(sumCriteria));
const promises = filteredFathers.map(father => {
const targetChildId = father.childs.find(sumCriteria).id;
return cy.request(‘GET’, `${childsUrl}/${targetChildId}`)
.its(‘body’)
.then(property => anotherCriteria(property))
});
return Promise.all(promises);
});
})
注意:(1)无需返回过滤器,因为它是异步的。(2) 在过滤器内,无需检查子项。长度(&A)&;find,因为find在空数组中找不到任何东西,(3)在数组中收集get承诺,并返回一个承诺,当所有承诺都解决时,该承诺就会解决。