javascript – 赛普拉斯:对同一路线的Stub响应有三种不同的响应

我在应用程序中有一个端点.我们在每个请求中使用params中的不同操作来达到相同的api.

网址

/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请求.

柏树的问题是你只能为一条路线指定一个响应,其他方式来处理这个是顺序请求(我们不能这样做)

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

关于我们如何在有效载荷的基础上模拟数据的任何想法?

解决方法:

我有完全相同的问题,发现@Richard Matsen的答案非常有用,但是当使用白名单选项时,无法访问proxy.request,它返回undefined.但是,如果您使用onRequest而不是白名单,则可以访问请求,从而根据该请求的正文执行任何操作.

所以这应该工作:

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'
      : ''
  }
})

相关文章

本文技术难度★★★,如果前编内容顺利执行,请继续。如果Se...
如果想从头学起Cypress,可以看下面的系列文章哦https://www...
web技术已经进化了,web的测试技术最终还是跟上了脚步,新一...
不很久不很久以前据说某家公司有两位前端,天天撸bug,为啥嘞...
我刚开始学习JavaScript并且一直在使用赛普拉斯来自动化一些...
cypress在pycharm中编写首先打开pycharm,打开cypress项目 ...