Cypress asyn c проверка формы - как захватить (возможно) быстрые изменения состояния - PullRequest
0 голосов
/ 29 марта 2020

У меня есть код проверки формы asyn c, который я хотел бы проверить с помощью Cypress. Код довольно прост -

  1. при вводе пользователем, введите asyn c состояние пользовательского интерфейса проверки (или оставайтесь в этом состоянии, если есть предыдущие запросы проверки, на которые не было ответа)
  2. отправить запрос на сервер
  3. получить ответ
  4. если нет ожидающих запросов, оставить asyn c состояние пользовательского интерфейса проверки

Шаг 1 это часть, которую я хочу проверить. Прямо сейчас это означает проверку, если некоторому элементу был назначен некоторый класс - но изменения состояния могут произойти очень быстро, и большую часть времени (не всегда!) Cypress истекает в ожидании чего-то, что УЖЕ произошло (другими словами, шаг 4 уже наступил к тому времени, когда мы добрались до того, чтобы увидеть, произошел ли шаг 1.) вторая строка, шаг 4 уже запущен и тест не пройден. Есть ли общий шаблон, который я должен знать, чтобы решить эту проблему? Естественно, я бы предпочел не менять тестируемый код.

Редактировать 1:

Я не уверен, что на 100% решил "гонку" условие здесь, но если я использую базовые нативные элементы (исключая абстракцию jQuery), у меня еще не было ошибки.

Итак, изменив:

cy.get("#some-input").type("...")

на:

cy.get("#some-input").then(jQueryObj => {
    let nativeElement = jQueryObj[0];
    nativeElement.value = "...";
    nativeElement.dispatchEvent(new Event("input")); // make sure the app knows this element changed
});

А затем запуск Cypress 'проверок того, какие классы были / не были добавлены, был эффективен.

1 Ответ

0 голосов
/ 30 марта 2020

Вы можете заблокировать запрос сервера, который происходит во время проверки формы, и замедлить его, см. delay параметр https://docs.cypress.io/api/commands/route.html#Use -delays-for-отклики

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...