Cypress 拦截 - 未发生任何请求

Dha*_*amo 13 cypress

单击复选框后,我的应用程序将触发 GET 请求。

我正在尝试用 cypress 验证这一点,但它会抛出 ' Timed out retrying after 30000ms: cy.wait() timed out waiting 30000ms for the 1st request to the route: getGridWind10M. No request ever occurred.'

我的代码:

cy.intercept("GET", "v1/kml/F20210903120000/Wind10M?view=grid*").as('getGridWind10M');
cy.get('[data-test="ckbx-w10m"]')
    .check({ force: true }) 
    .should("be.checked"); 
cy.wait('@getGridWind10M').its('response.statusCode').should('eq', 200)
Run Code Online (Sandbox Code Playgroud)

实际端点:

https://domain/path/api/v1/kml/F20210903120000/Wind50M?view=grid&time=2021-09-03T14:00:00.000Z&z=3&x=5&y=4
Run Code Online (Sandbox Code Playgroud)

测试日志:

在此输入图像描述

在此输入图像描述

我尝试过以下方法,但没有成功。有人请帮助我找出我在这里缺少的位置和内容,因为请求已成功完成,如图所示?

cy.intercept("GET", "*/F20210903120000/Wind10M?view=grid*").as('getGridWind10M');
cy.intercept("GET", "*F20210903120000/Wind10M?view=grid&*").as('getGridWind10M');
cy.intercept("GET", "*F20210903120000/Wind10M?view=grid*").as('getGridWind10M');
cy.intercept("GET", "/F20210903120000/Wind10M?view=grid*").as('getGridWind10M');
Run Code Online (Sandbox Code Playgroud)

Pao*_*olo 14

您可以使用前导**含义多个前面的部分来捕获它,并且尾随?*含义具有一些搜索参数。

const url = "**/v1/kml/F20210903120000/Wind10M?*"
cy.intercept('GET',url, {}).as('getGridWind10M')    // stubbing here
cy.get('checkbox').check()
cy.wait('@getGridWind10M')
Run Code Online (Sandbox Code Playgroud)

Wind50M我注意到实际端点和拦截的端点存在差异Wind10M,可能是拼写错误?

如果您通配中间路径段,这也适用

const url =  "**/v1/kml/*/Wind10M?*"
Run Code Online (Sandbox Code Playgroud)