如何用Cypress拦截含动态路径参数的API?通配符解析
解决方案与通配符解析
如何拦截动态路径的API
要同时拦截你列出的三个API(包括带动态lead1/lead2的路径),可以使用以下两种方式:
方式1:单个拦截覆盖所有目标API
使用**通配符匹配任意后续路径片段:
cy.intercept({ pathname: '/randomApi/import/entity/**' }).as("entitiesData")
这个规则会匹配:
/randomApi/import/entity/randomApi/import/entity/lead1/tabs/randomApi/import/entity/lead2/tabs- 以及任何以
/randomApi/import/entity/开头的其他路径
方式2:精准匹配目标路径
如果你只想拦截指定的三种路径(避免匹配无关路径),可以使用更精确的模式:
// 拦截第一个精确路径 cy.intercept({ pathname: '/randomApi/import/entity' }).as("entitiesRoot") // 拦截带动态参数的/tabs路径 cy.intercept({ pathname: '/randomApi/import/entity/*/tabs' }).as("entityTabs")
这里的*会匹配任意单个路径片段(比如lead1、lead2),但不会匹配更深的层级。
四种通配符写法的作用解析
Cypress的cy.intercept使用minimatch语法处理路径匹配,以下是四种写法的具体含义:
/randomApi/import/entity**匹配单个路径片段内的任意字符(不包含/)- 匹配示例:
/randomApi/import/entity、/randomApi/import/entity123、/randomApi/import/entityXYZ - 不匹配:
/randomApi/import/entity/lead1/tabs(*无法跨越/)
/randomApi/import/entity****匹配任意字符(包含/),可跨多个路径片段- 匹配示例:
/randomApi/import/entity、/randomApi/import/entity/lead1/tabs、/randomApi/import/entity/abc/def/ghi - 注意:此写法会同时匹配无
/的后缀(如entityXYZ)和多段路径
/randomApi/import/entity/*/*匹配**entity后的单个路径片段**- 匹配示例:
/randomApi/import/entity/lead1、/randomApi/import/entity/lead2、/randomApi/import/entity/anySegment - 不匹配:
/randomApi/import/entity(缺少后续片段)、/randomApi/import/entity/lead1/tabs(超过一个后续片段)
/randomApi/import/entity/**/**匹配**entity后的任意数量路径片段(包括0个)**- 匹配示例:
/randomApi/import/entity、/randomApi/import/entity/lead1/tabs、/randomApi/import/entity/a/b/c/d - 这是最灵活的写法,能覆盖所有以
/randomApi/import/entity开头的路径
内容的提问来源于stack exchange,提问作者Achal Utkarsh
相关产品推荐
相关产品推荐

