Cy.request()没有明显原因超时

时间:2020-01-23 14:31:48

标签: cypress

我目前正在使用cypress测试一个应用程序。此应用程序具有后端(API)和前端。赛普拉斯用于测试前端。

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

这是赛普拉斯中一个请求的代码(这个是有问题的之一):

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

这是问题所在:

  • 如果后端在本地运行并且前端连接到本地后端,则可以正常工作。
  • 如果我使用的后端版本完全相同,但在远程服务器上,则cy.request()超时,并说它从未收到来自服务器的任何答复
  • 在同一测试中,使用cy.request()到远方后端的其他呼叫在出现问题之前可以正常工作。例如以下示例:
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
  })
})
  • 通过邮递员发送到遥远的后端时,完全相同的请求(相同的URL,相同的方法,相同的有效负载)可以很好地工作,并且后端几乎立即响应。
  • 即使cypress并没有从遥远的后端那里得到答案,但所说的后端确实会执行并响应cypress的请求。确实出于某种原因,赛普拉斯不知道响应。

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

0 个答案:

没有答案
相关问题