Я попытался выполнить запрос с помощью Cypress, а затем создать новые объекты со значением, полученным в ответ, но новые объекты создаются мгновенно, и запрос отправляется после того, как все объекты уже созданы:
describe("example", function() {
it("of test", function() {
console.log("1");
cy.request({
url: Cypress.env("URL"),
method: "POST",
headers: auth_req.authHeaders,
body: merged_body
})
.as("/authorize")
.then((resp) => {
console.log("2");
Cypress.env("resp_code", resp.status);
console.log("RESP CODE FROM RESPONSE:");
console.log(resp.status);
})
.its("headers")
.its("content-type")
.should("include", "application/json");
console.log("3");
const var1 = new something.NotImportant;
console.log("4");
const var2 = new something.AlsoNotImportant;
console.log("5");
}
}
Я ожидал получить «1», «2», «3», «4» и «5» в консоли.Тем не менее, я получаю «1», «3», «4» и «5» почти мгновенно, и через несколько секунд (медленный ответ от сервера) я вижу, что запрос отправляется, а «2» выплевывается на мойconsole.
Мой вопрос: если я правильно понял, запросы асинхронны, и Cypress ожидает их завершения, так почему же тест не ожидает получения ответа и ТОГО создания объектов?Как я могу изменить код, чтобы быть уверенным, что объекты, которые я хочу создать после запроса, используют значение, полученное из запроса при создании новых объектов?Я пытался использовать Cypress.env, но объекты создаются ДО запроса, и вместо значения, считанного из ответа, используется неправильное значение.
Дополнительный вопрос: почему этот код не работает, как предполагалось(зависает компьютер)?
while (true) {
cy.wait(5000);
var resp_code = Cypress.env("resp_code");
console.log("RESP CODE:");
console.log(Cypress.env("resp_code"));
}
"RESP CODE" выводится на консоль примерно каждые 100 мсек. Я полагаю, это потому, что тест асинхронный, и я пытаюсь использовать здесь подход синхронизации.Я прав?