我对Cypress还不熟悉。我会感激任何提示和帮助。我的测试:
- 转到页面
- 解析来自服务器的响应
- 从该响应中获取任意项
- 然后,我想将该项保存到对象中以供稍后在测试中使用。
cy.wait('@pageLoaded').then(({ response }) => {
expect(response.statusCode).to.equal(200);
let i = randomItem();
//Create an object
const Item = {
Id: response.body.items[i].id,
IpuCode: response.body.items[i].ipuCode,
Description: response.body.items[i].description,
PackSize: response.body.items[i].packSize,
PackType: response.body.items[i].packType,
};
//Here I'm getting the expected array
cy.log(Item);
})
//And here I want to re-use it
cy.addItemToShoppingCart(Item.value(IpuCode), pharmacyId, Item.value(Id), currentDateTime);
所以,我已经尝试过了。
cy.addItemToShoppingCart(Item.value(IpuCode), pharmacyId, Item.value(Id), currentDateTime);
结果:未定义项目
cy.addItemToShoppingCart(Item.IpuCode, pharmacyId, Item.Id, currentDateTime);
结果:未定义项目
我也有一种可行的方法来获取值并使用它。
cy.wait('@pageLoaded').then(({ response }) => {
expect(response.statusCode).to.equal(200);
let i = randomItem();
let ItemGmsCode = response.body.items[i].gmsCode;
cy.log(ItemGmsCode);
cy.wrap(ItemGmsCode).as('itemGmsCode');
})
但是我不喜欢每次都要将命令包裹在一个块中。
cy.get('@itemGmsCode').then((gmsCode) => {
//do soemthing
})
或者我是不是想要不可能的事情?
this.item.ipuCode
不会起作用,因为在评估它的时候,这个值还没有被计算出来。无论如何,你必须使用then
回调函数。 - Mikhail Bolotov