为什么 cy.wait 不处理通过变量输入 cy.intercept 属性 的请求?

Why cy.wait doesn't handle request, with cy.intercept property entered via variable?

如果直接在cy.intercept属性中输入'Panasonic'就可以了

cy.intercept('GET', '**/part-number/search?q=Panasonic**').as('getPNList')

但是如果这个值通过变量添加到 cy.intercept 属性 中,它就不起作用并且 cy.wait 会随着超时而下降。可能是什么原因?

let pnName = 'Panasonic'
    cy.intercept('GET', '**/part-number/search?q={@pnName}**').as('getPNList')
    cy.get('.select2-search__field').click().type(pnName)
    cy.wait('@getPNList').then((interception) => {
        expect(interception.response.statusCode).eq(200)
    })

我相当确定您的字符串插值不正确,因此,您的拦截只是在寻找 '**/part-number/search?q={@pnName}**' 而不是用变量替换 {@pnName}

试试这个:

cy.intercept('GET', `**/part-number/search?q=${pnName}**`).as('getPNList')

Check out more about string templates/string interpolation at MDN.

考虑使用查询参数的替代格式

参考:Matching with RouteMatcher

const pnName = 'Panasonic'

cy.intercept({
  pathname: '**/part-number/search',
  query: {
    q: pnName,
  },
}).as('getPNList')