Как l oop через запросы с использованием кипариса? - PullRequest
0 голосов
/ 02 марта 2020
  function AssertResponseCode200(request) {
    cy.wait(request).then(response => {
      expect(response.status).to.eq(200);
    });
  }

  function CheckDictionaries() {
    var requestUrls = [
      "requestUrl1",
      "requestUrl2",
      "..."
    ];

    for (let i = 0; i < requestUrls.length; i++) {
      cy.route("GET", requestUrls[i]).as(`request${i}`);
      AssertResponseCode200(`@request${i}`);
    }
  }

  it("Assert dictionaries", () => {
    cy.server();
    CheckDictionaries();
});

enter image description here

CypressError: Timed out retrying: cy.wait() timed out waiting 5000ms for the 1st request to the route: 'request1'. No request ever occurred.

Я хочу циклически проходить запросы и проверять, что все работает нормально, а код ответа равен 200. Но я Я застрял, потому что единственный URL, который получает псевдоним, является первым в моем массиве, но мне нужно, чтобы все элементы моего массива requestUrls были связаны с request${i}. Что-то не так с моим кодом, или маршруты в кипарисе не могут работать с циклами?

1 Ответ

1 голос
/ 02 марта 2020

Я думаю, что проблема у вас в том, что вы ожидаете только один запрос до финиша sh каждый раз, а запросы финишируют sh асинхронно в случайном порядке, поэтому иногда вы можете ожидать, что запрос уже выполнен .

cy.wait() также принимает массив псевдонимов, так что вы можете сначала собрать все псевдонимы, а затем ждать их всех с одним cy.wait().

const aliases = [];
for (let i = 0; i < requestUrls.length; i++) {
  aliases.push(`@request${i}`);
  ...
}

cy.wait(aliases);
...