Cypress:具有三个不同响应的同一路由的存根响应

2023-11-22

我的应用程序中有一个端点。我们为每个请求使用相同的 api,并在参数中使用不同的操作。

URL:

/application/api

示例请求负载 1:

{
  "action": "CARD_TRANSACTION_HISTORY",
  "data": {
    "date_from": "2018-12-01",
    "date_to": "2018-12-31",
    "total": 5
  },
  "meta": {}
}

示例请求负载 2:

{
  "action": "CARD_BALANCE",
  "data": {
    "date_from": "2018-12-01",
    "date_to": "2018-12-31",
    "total": 5
  },
  "meta": {}
}

请求负载示例 3:

{
  "action": "CURRENCY_RATES",
  "data": {
    "date_from": "2018-12-01",
    "date_to": "2018-12-31",
    "total": 5
  },
  "meta": {}
}

上述请求中的操作会根据不同的请求而变化。

当仪表板页面加载时,我们触发 3同时具有不同操作的 AJAX POST 请求。

cypress 的问题是你只能为一条路由指定一个响应,而处理此问题的另一种方法是发出顺序请求(我们不能这样做)

即使我们将响应编写为函数,它也只会被调用一次。

关于如何根据有效负载模拟数据有什么想法吗?


我遇到了完全相同的问题,并发现 @Richard Matsen 的答案非常有用,但是当使用whitelist无法访问的选项proxy.request,返回undefined。但如果你使用onRequest代替whitelist,您可以访问该请求,从而根据该请求的正文实施任何操作。

所以这应该有效:

cy.server({
  onRequest: (xhr) => {
    xhr.url = xhr.url + 
      xhr.request.body.action  == 'CARD_TRANSACTION_HISTORY' ? '?transactionHistory'
      : xhr.request.body.action  == 'CARD_BALANCE' ? '?balance'
      : xhr.request.body.action  == 'CURRENCY_RATES' ? '?currencyRates'
      : ''
  }
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Cypress:具有三个不同响应的同一路由的存根响应 的相关文章