赛普拉斯 cy.wait 别名

Cypress cy.wait with alias

我想通过 Cypress 中的 API 提取一个大的 json 文件。以下代码(不带 cy.wait())适用于小文件。一旦文件变大并且响应时间超过 30 秒,脚本就会超时。

因此我添加了cy.wait('@api_call')

describe('Api request', () => {
    it('get json', () => {
        cy.request({
            method: 'GET',
            url: '/api_endpoint',
            headers: {
                'API-KEY': 'xxxxxxxxxxxxxxxxx',
            }
        }).as('api_call')
        cy.wait('@api_call').its('response.body').should('contain','name')
                .then(response => {
            var someArr = new Array();
             someArr = response.body;
            cy.writeFile('cypress/fixtures/testdata.txt', someArr);
        })
    })
})

现在这会抛出错误

cy.wait() only accepts aliases for routes.

如何正确地告诉 Cypress 等待请求解决?

[edit]我现在尝试从 https://docs.cypress.io/guides/references/configuration#Timeouts 添加所有可能的超时设置并将它们设置为 90000ms,但它仍然不会增加超时。 30秒后仍然超时。

您可以在 cypress.json 中为 responseTimeout 添加全局超时,例如:

{
  responseTimeout: 30000
}

或者,您也可以单独添加超时 -

describe('Api request', () => {
  it('get json', () => {
    cy.request(
      {
        method: 'GET',
        url: '/api_endpoint',
        headers: {
          'API-KEY': 'xxxxxxxxxxxxxxxxx',
        },
        timeout: 30000
      },
    ).as('api_call')
    cy.get('@api_call')
      .its('response.body')
      .should('contain', 'name')
      .then((response) => {
        var someArr = new Array()
        someArr = response.body
        cy.writeFile('cypress/fixtures/testdata.txt', someArr)
      })
  })
})

看来我的错是我使用超时选项的方式

describe('Api request', () => {
    it('get json', () => {
        cy.request({
            method: 'GET',
            url: 'https://api_endpoint',
            headers: {
                'API-KEY': 'xxxxxxx',
            },
            timeout: 90000 <-----
            },
        )
            .then((response) => {
                var someArr = new Array()
                someArr = response.body
                cy.writeFile('cypress/fixtures/testdata.txt', someArr)
            })
    })
})

如果您将超时选项放在那里,它将按预期工作。

现在它最多等待 90 秒,这对我来说已经足够了。