Что не так с электронной почтой?
Когда я пишу:
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 ответа
Это асинхронное поведение огурца. В первом случае вы ждете, пока действие завершится, ожидая флеш-сообщения. Внутренний драйвер огурца "ждет", пока элемент не станет видимым, опрашивая этот элемент с интервалом и защитной задержкой (время ожидания капибары).
А во втором случае вы сразу же проверяете электронную почту. Огурец ничего не знает о ваших контроллерах / действиях и не синхронизируется с ними.
Вы можете оставить первый случай или ввести какой-то опрос в шаге проверки электронной почты.
Это может быть проблема синхронизации, в зависимости от используемого вами браузера. Мы много видели это, используя Капибару с Селеном. Шаг "Я должен увидеть..." фактически останавливает тест и ожидает отображения этого сообщения на странице (когда происходит отправка электронного письма). Если вы перенесете это в конец, есть вероятность, что шаг "должен получить электронное письмо" просто происходит слишком быстро, делая утверждение до того, как приложение действительно получит возможность отправить электронное письмо.