用于类似prevSubject的数组的Cypress自定义命令

用于类似prevSubject的数组的Cypress自定义命令,cypress,Cypress,我正在编写一个自定义命令getFirst,它根据给定的谓词返回第一个元素。一切正常,但我想指定一个特定的prevSubject参数,而不是true,以防止不当使用 在中,唯一提到的选项是false、true、optional、element、document或window,但它没有说明如何像指定的那样指定类似数组的结构 你知道怎么做吗 这是我的密码: Cypress.Commands.add('getFirst', {prevSubject: true}, <TSourceSubject,

我正在编写一个自定义命令getFirst,它根据给定的谓词返回第一个元素。一切正常,但我想指定一个特定的prevSubject参数,而不是true,以防止不当使用

在中,唯一提到的选项是false、true、optional、element、document或window,但它没有说明如何像指定的那样指定类似数组的结构

你知道怎么做吗

这是我的密码:

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是否为数组: