2016-06-17 10 views
1

Я работаю над автоматизацией контроля качества с использованием огурца и Capybara и имеет шаг:Как посетить ссылку по электронной почте открыт с letter_opener жемчужиной

When(/^I follow the reset password link in the email$/) do 
    last_email = ActionMailer::Base.deliveries.last 
    password_reset_url = last_email.body.match(/http.*\/users\/password\/edit.*$/) 
    visit password_reset_url 
end 

Стадии терпит неудачу с:

undefined method `body' for nil:NilClass (NoMethodError) 

Дополнительно, dropping binding.pry после первой строки приводит к нулю для last_email, что является странным.

У кого-нибудь есть совет или мысли о том, почему это может происходить здесь?

+0

Вы нашли решение? –

ответ

3

Если вы используете letter_opener, электронные письма не будут поставляться в ActionMailer и будут открываться в браузере, который не контролируется Capybara. Если вы хотите работать с электронными письмами в capybara, вы, вероятно, должны смотреть на драгоценный камень capybara-mail, а не letter_opener. Letter_opener больше ориентирован на среду разработчиков, а не на тест

0

Tom Walpole's answer абсолютно прав в содержании и указывает вас в направлении capybara-email gem.

Вот потенциальный пример того, как вы могли бы изменить свой образец кода, при условии, что у вас есть еще один шаг огурца, который нажал на кнопку/ссылку, чтобы отправить инструкции по изменению пароля Пароль:

When(/^I follow the reset password link in the email (.*)$/) do |email| 
    # finds the last email sent to the passed in email address. 
    # This also sets the `current_email` object, which you can think 
    # of as similar to Capybara's `page` object, but for an email. 
    open_email(email) 
    # Assuming the email link to change your password is called 
    # 'Change my password', you can just click it, just as you would 
    # on a Capybara `page`. 
    current_email.click_link 'Change my password' 
end 

После нажатия на ссылку, Вам будут приняты к page, где вы можете продолжить до fill_in 'New password', with: 'foobar' и т. д., что я предполагаю, что вы попали на другой шаг Огурца.

Смежные вопросы