【问题标题】:Cypress intercept - No request ever occurred赛普拉斯拦截 - 从未发生过请求
【发布时间】:2021-09-03 14:47:03
【问题描述】:

单击复选框时,将在我的应用程序中触发 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)

实际端点:

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

测试日志:

我尝试了以下方法,但没有成功。有人请帮我找出我在这里遗漏的地方和内容,因为请求已成功完成,如图所示?

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');

【问题讨论】:

  • 使用部分网址,您是否尝试过使用整个网址https://domain/path/api/v1/kml/F20210903120000/Wind50M?view=grid&time=2021-09-03T14:00:00.000Z&z=3&x=5&y=4
  • 您是否尝试过使用更接近模式匹配示例 (docs.cypress.io/api/commands/intercept#Pattern-Matching) 中的内容? **/F2021...00/Wind10M* 之类的东西?
  • 谢谢你们。我错过了前面的两个 *,您的评论很有帮助。

标签: cypress


【解决方案1】:

您可以使用前导 ** 表示多个前面的部分来捕获它,而尾随 ?* 表示有一些搜索参数。

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

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

如果您正在使用中间路径段,这也适用

const url =  "**/v1/kml/*/Wind10M?*"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    • 1970-01-01
    • 2022-11-02
    • 2021-10-10
    相关资源
    最近更新 更多