用于类似prevSubject的数组的Cypress自定义命令
我正在编写一个自定义命令getFirst,它根据给定的谓词返回第一个元素。一切正常,但我想指定一个特定的prevSubject参数,而不是true,以防止不当使用 在中,唯一提到的选项是false、true、optional、element、document或window,但它没有说明如何像指定的那样指定类似数组的结构 你知道怎么做吗 这是我的密码:用于类似prevSubject的数组的Cypress自定义命令,cypress,Cypress,我正在编写一个自定义命令getFirst,它根据给定的谓词返回第一个元素。一切正常,但我想指定一个特定的prevSubject参数,而不是true,以防止不当使用 在中,唯一提到的选项是false、true、optional、element、document或window,但它没有说明如何像指定的那样指定类似数组的结构 你知道怎么做吗 这是我的密码: Cypress.Commands.add('getFirst', {prevSubject: true}, <TSourceSubject,
Cypress.Commands.add('getFirst', {prevSubject: true},
<TSourceSubject, TPredicateSubject, TResult>(
subject: TSourceSubject,
getPredicateSubject : (sourceSubject : TSourceSubject) => Chainable<TPredicateSubject>,
predicate: (predicateSubject: TPredicateSubject) => boolean) => {
cy.wrap(subject).each((item : TSourceSubject) => {
getPredicateSubject(item).then<TPredicateSubject>((predicateSubject : any) => {
if (predicate(predicateSubject)) {
cy.wrap(item).as('getFirstItemAlias');
}
});
});
return cy.get('@getFirstItemAlias');
})
PS:如果有人知道如何摆脱getFirstItemAlias别名,或者有办法使其作用域成为本地的,这也会非常有帮助
谢谢 我很好奇,所以我查看了Cypress的源代码以了解这是如何实现的 prevSubject没有任何其他未记录的选项: cy.each正在使用{prevSubject:true}并显式检查subject是否为数组: