【问题标题】:In Cypress, how do I stub a POST API request with parameters in the body?在 Cypress 中,如何使用正文中的参数存根 POST API 请求?
【发布时间】:2019-06-07 06:54:05
【问题描述】:

我正在使用 Cypress 编写端到端测试,我想对我的应用程序发出的网络请求进行存根。具体来说,我想删除多个在正文中具有参数的 POST 请求,并根据这些参数更改我的模拟响应。

我想做类似的事情

cy.route({
  method: "POST",
  url: "/todos/add"
  params: {
    "urgency": 3,
    "stakeholder_id": "SKH001"
  },
  response: "fixture:add1.json",
})

cy.route({
  method: "POST",
  url: "/todos/add"
  params: {
    "urgency": 1,
  },
  response: "fixture:add2.json",
})

但是看完之后 https://docs.cypress.io/guides/guides/network-requests.htmlhttps://docs.cypress.io/api/commands/route.html#Arguments,我看不到检查被存根的请求中的参数的受支持方法。

我可以通过将函数传递给cy.routeonRequest 参数来完成此操作吗?如果是这样,我会从那个告诉赛普拉斯“这条路线实际上不处理这个请求”的函数返回什么?

【问题讨论】:

标签: cypress stub


【解决方案1】:
cy.route({
  method: "POST",
  url: "/todos/add"
  body: {
    "urgency": 1,
  },
  response: "fixture:add2.json",
})

【讨论】:

  • 在这些情况下,指出发生了什么变化并解释其重要性的原因非常有用。在这种情况下,我看到您将 params 更改为 body。但这真的很容易在没有解释的情况下错过。你能更新你的答案吗?
  • 这也是不准确的。 body,根据官方文档,不适用于route
【解决方案2】:
【解决方案3】:

你也可以使用拦截方法。

cy.intercept('POST', <your api end point>, {response:
<your json file path>}).as('postAPI')

【讨论】:

    【解决方案4】:

    如果您的 Cypress 版本大于 6,则应重构为使用 intercept。拦截处理参数非常干净,您可以使用别名或回调将部分输出分配给文件。

    https://docs.cypress.io/api/commands/route https://docs.cypress.io/api/commands/intercept#Arguments

    【讨论】:

      猜你喜欢
      • 2020-04-16
      • 2019-06-15
      • 1970-01-01
      • 1970-01-01
      • 2012-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-12
      相关资源
      最近更新 更多