Używam rspec/capybara/devise do przeprowadzania testów integracyjnych w aplikacji. Jedną z funkcji aplikacji jest zawsze wypełnianie "Rejestracja konta" za pomocą funkcji potwierdzenia (np. Rejestracja - otrzymanie wiadomości e-mail z potwierdzeniem - kliknięcie łącza - potwierdzenie konta).Testowanie "Potwierdzenie konta" za pomocą szyn/rspec/capybara/devise
require 'spec_helper'
describe "User Authentication" do
describe "New user" do
before(:each) do
@user = Factory.build(:user)
end
it "can confirm account by clicking on confirmation link" do
visit root_path
click_link "Register"
page.should have_content "Register for an account"
fill_in "user_email", :with => @user.email
fill_in "user_password", :with => @user.password
fill_in "user_password_confirmation", :with => @user.password
fill_in "user_first_name", :with => @user.first_name
fill_in "user_last_name", :with => @user.last_name
fill_in "user_city", :with => @user.city
fill_in "user_province", :with => @user.province
fill_in "user_country", :with => @user.country
fill_in "user_expertise", :with => @user.expertise
choose "user_experience_professional"
click_button "Go!"
last_email.to.should include(@user.email)
end
end
end
Oto moi pomocnicy:
Linkmodule MailerMacros
def last_email
ActionMailer::Base.deliveries.last
end
end
Potwierdzenie znajduje się w wiadomości e-mail HTML generowanego. Byłoby cudownie móc zrobić coś takiego (zakładając "Potwierdź moje konto") jest linkiem do sprawdzania konta.
last_email.body.find_link("Confirm My Account").click_link
Czy ktoś ma jakieś sugestie dotyczące możliwości identyfikacji linków w wiadomości e-mail, które mogłyby przejść do request_spec?
Dzięki
sobie sprawę, że jest to letni pytanie. – PriyankaK
Wciąż mi pomogłeś. Połóż mnie na klejnotu email_spec, który jest niesamowity! Możesz także użyć "click_first_link_in_email email" w email_spec – mattvv
@mattvv Próbowałem '' 'click_first_link_in_email''', ale nie działało dla mnie. Dzięki za odpowiedź! – PriyankaK