Что не так с электронной почтой?

Когда я пишу:

When I fill in "To" with "example1@example.com, example2@example.com"
And I press "Send testimonials request"
Then I should see "Testimonial requests have been successfully sent"
And "example1@example.com" should receive an email with subject "Add a testimonial..."
And "example2@example.com" should receive an email with subject "Add a testimonial..."

все отлично работает

Но если я напишу:

When I fill in "To" with "example1@example.com, example2@example.com"
And I press "Send testimonials request"
Then "example1@example.com" should receive an email with subject "Add a testimonial..."
And "example2@example.com" should receive an email with subject "Add a testimonial..."
And I should see "Testimonial requests have been successfully sent"

Ничего не работает... Просто одна строка была перенесена в конец и... бум..

Может быть причина в некоторой задержке перед проверкой электронной почты? или что-то типа того.

2 ответа

Решение

Это асинхронное поведение огурца. В первом случае вы ждете, пока действие завершится, ожидая флеш-сообщения. Внутренний драйвер огурца "ждет", пока элемент не станет видимым, опрашивая этот элемент с интервалом и защитной задержкой (время ожидания капибары).

А во втором случае вы сразу же проверяете электронную почту. Огурец ничего не знает о ваших контроллерах / действиях и не синхронизируется с ними.

Вы можете оставить первый случай или ввести какой-то опрос в шаге проверки электронной почты.

Это может быть проблема синхронизации, в зависимости от используемого вами браузера. Мы много видели это, используя Капибару с Селеном. Шаг "Я должен увидеть..." фактически останавливает тест и ожидает отображения этого сообщения на странице (когда происходит отправка электронного письма). Если вы перенесете это в конец, есть вероятность, что шаг "должен получить электронное письмо" просто происходит слишком быстро, делая утверждение до того, как приложение действительно получит возможность отправить электронное письмо.

Другие вопросы по тегам