首页 > 解决方案 > Cy.request() 无故超时

问题描述

我目前正在使用 cypress 测试应用程序。这个应用程序有一个后端(API)和一个前端。Cypress 用于测试前端。

在开始测试之前,我们初始化后端的数据库,使其处于测试所需的状态。我们通过向后端发送直接请求来实现这一点,使用cy.request().

这是 cypress 中的请求之一的代码(这个是有问题的):

Cypress.Commands.add("assignCityToTerritory", (territory, cityId) => {
  return cy.request({
    method: 'POST',
    url: Cypress.env('apiUrl') + '/territories/' + territory.id + '/city-assignment',
    headers: {
      Authorization: 'Bearer ' + window.localStorage.getItem('jwt')
    },
    body: {
      city: {
        id: cityId
      }
    }
  }).then(response => {
    return response
  })
})

问题来了:

Cypress.Commands.add("create", (itemType, itemData) => {
  cy.log("# Creating " + itemType)
  return cy.request({
    method: 'POST',
    url: Cypress.env('apiUrl') + '/' + itemType + '/',
    headers: {
      Authorization: 'Bearer ' + window.localStorage.getItem('jwt')
    },
    body: itemData
  }).then(response => {
    return response
  })
})

结论:我不知道为什么这个特定cy.request()的超时

标签: cypress

解决方案


猜测:第二个请求是否返回标头Location: something.external?正如这个 GH 评论所说:

在对我试图访问的 url 进行一些网络跟踪后,我注意到该页面试图加载不同的域。因为 cypress 不允许这样做,所以请求会在两分钟后超时,


推荐阅读