【发布时间】:2020-01-30 10:48:13
【问题描述】:
我需要测试一个对象数组是否包含某个值。测试是用 Cypress 编写的,为此,我使用 cy.wrap 和 .some()。
我的代码如下所示:
const myCustomArray = [{ name: 'Lisa' }, { name: 'Katie' }];
cy.wrap(myCustomArray.some((user) => {
if (user.name === 'Lisa') {
return true;
} else {
return false;
}
})).should('eq', true);
这很好用,但问题是它会在赛普拉斯控制台中返回一个非常非特定的消息。
我想要的是,以一种可以理解消息的方式更改我的代码。在这个想法中,它会是这样的:
const myCustomArray = [{ name: 'Lisa' }, { name: 'Katie' }];
cy.wrap(myCustomArray.some((user) => {
if (user.name === 'Lisa') {
return 'user name is Lisa';
}
})).should('eq', 'user name is Lisa');
但这不能工作,因为.some() 只能返回一个布尔值。我想有一个数组函数可以帮助我做到这一点,但我找不到哪个。
我不确定是否:
- 我不知道有一些赛普拉斯命令可以解决这个问题,例如。自定义断言消息。
- 或者它可以使用 JavaScript 来解决
两种解决方案都适合我。
【问题讨论】:
-
与其将
if放在some中,不如将其放在后面,使用三元组:a.some() ? 'username is lisa' : null
标签: javascript arrays cypress