延迟 Cypress 中的拦截响应

Tyl*_*ler 3 reactjs cypress

我正在编写 cypress 测试,我想测试我们程序的一个功能,该功能将在数据开始出现时显示数据。这可能是一个包含数百个元素的列表,为了加快速度,我们将请求分解为多个请求。

第一个请求将获取前 50 个项目,第二个请求将获取接下来的 100 个项目,依此类推。

我想确保第一个请求返回后,列表包含 50 个项目,第二个请求返回后,列表包含 150 个项目。

我不知道该怎么做,可靠地延迟拦截响应,以便我可以返回前 50 个,检查列表长度,然后允许更多数据进入。

这是我到目前为止所拥有的:

const baseUrl = 'https://example.io/listData*'
const document = 'public_document_10101'

cy.intercept(
  {
    url: baseUrl,
    query: {
      limit: '50',
      'document': document
    },
  },
  { fixture: 'first-response.js' }
).as('firstResponse')

cy.intercept(
  {
    url: baseUrl,
    query: {
      limit: '100',
      skip: '50',
      'document': document
    },
  },
  { fixture: 'second-response.js' }
).as('secondResponse')
Run Code Online (Sandbox Code Playgroud)

我不相信类似的事情cy.wait('@firstResponse')会做我想做的事,因为这根本不会阻止第二个返回。我愿意使用某种延迟,但是如果能等到我这么说之前完全阻止它,那就太好了。

Lle*_*ins 7

您还可以使用 setDelay。赛普拉斯文档

cy.intercept({ url: 'http://localhost:3001/**', middleware: true }, (req) => {
  req.on('response', (res) => {
    // Wait for delay in milliseconds before sending the response to the client.
    res.setDelay(1000)
  })
})
Run Code Online (Sandbox Code Playgroud)