Ждите последнего ответа graphQL - PullRequest
0 голосов
/ 16 октября 2019

Как ждать последнего ответа GraphQL с помощью CypressIO?

В нашей компании есть приложение, которое использует GraphQL для извлечения данных. Мне нужно протестировать сетку с двумя столбцами (время и статус), которая содержит ячейки с данными. Я могу фильтровать и показывать только данные, которые ex. иметь определенное время и статус.

Example of what it could look like

У меня есть тест, который должен проверить, есть ли в полученном ответе правильные данные. Проблема в том, что большая часть запускает запрос graphQL, но отображает только ответ на последний запрос графа.

Поскольку все запросы в основном выглядят одинаково, за исключением небольшого изменения в переменной.

Так выглядит мой тестовый код.

cy.server();
  cy.route({
    method: 'POST',
    url: 'http://localhost:3000/'
  }).as('graphQLRequest');

cy.setTime(10); //Triggers request
cy.setStatus(ok); //Triggers requests

cy.wait('@graphQLRequest').then((xhr) => {
    xhr.response.body.data.forEach((row) => {
      expect(row.time).to.be.least(10).and.most(10);
      expect(row.status).to.equal(ok);
    });

Проблема заключается в том, что, поскольку запрос из cy.setTime будет завершен до запроса из cy.setStatus, ожидание будет выглядеть по первым запущенным запросам, которые будут ожидать (row.status) .to. равно (хорошо), чтобы потерпеть неудачу, потому что это не было отфильтровано в этом ответе.

Так, как я могу убедиться, что cy.wait входит только в последний запрос?

...