В настоящее время я тестирую приложение с помощью Cypress. Это приложение имеет интерфейс (API) и интерфейс. Cypress используется для тестирования внешнего интерфейса.
Перед началом теста мы инициализируем базу данных внутреннего интерфейса, чтобы она находилась в состоянии, необходимом для теста. Мы достигаем этого, отправляя прямые запросы к бэкэнду, используя cy.request()
.
Вот код одного из запросов на кипарис (этот проблемный c один):
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()
на удаленный бэкэнд работают нормально как раз перед проблемной c один. Например, этот:
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, тот же метод, та же полезная нагрузка) работает хорошо, когда отправляется через почтальона на удаленный сервер, и сервер отвечает почти сразу .
- Несмотря на то, что кипарис не получает ответ от удаленного бэк-энда, указанный бэк-энд выполняется и отвечает на запрос кипариса. По какой-то причине, похоже, кипарис не знает об ответе.
Вывод: Понятия не имею, почему этот параметр c cy.request()
превышен