如何在赛普拉斯中捕获和修改XHR JSON响应?

时间:2020-02-26 11:21:43

标签: json xmlhttprequest cypress

在赛普拉斯中,可以对XHR响应进行存根,但是我想捕获并修改JSON响应。

https://docs.cypress.io/guides/guides/network-requests.html#Stub-Responses https://docs.cypress.io/api/commands/route.html#With-Stubbing

我找不到一个很好的例子来解释这一点。

在我的应用中,有一个对API的调用:

/ isHuman

,响应为:

{“ isHuman”:true}

我想拦截此呼叫,并将 true 和另一个测试设为 false

有人可以提供吗?

最后修改: 在localhost(我定义baseURL- localhost:3123 )上测试应用程序,但是有对不同域( https://api.app.com/isHuman )的api调用。

我需要更改该xhr呼叫的响应。

2 个答案:

答案 0 :(得分:0)

您可以在同一it()内多次重新定义相同的url:

it('should od whatever', () => {
  cy.route('GET', '/isHuman', { "isHuman": true });
  /* trigger some requests */

  cy.route('GET', '/isHuman', { "isHuman": false });
  /* trigger other requests */
});

答案 1 :(得分:0)

 it('modifies the response from the server to insert Kiwi', () => {
      cy.intercept('favorite-fruits', (req) => {
        req.reply((res) => {
          // add Kiwi to the list received from the server
          console.log('original response from the server is %s %o', typeof res.body, res.body)
          const list = res.body

          list.push('Kiwi')
          res.send(list)
        })
      })

      cy.visit('/')
      // check if Kiwi is the last fruit
      cy.get('li').should('have.length.gt', 3)
      .last().should('contain', 'Kiwi')
    })

以下是代码来源:

Partial route mock