Как проверить электронную почту Pony в приложении Sinatra, используя rspec?
Я пробую email_spec, который говорит, что он поддерживает Pony, но я не уверен, как бы я мог протестировать электронную почту в приложении sinatra. Примеры в readme показывают использование с рельсами ActionMailer
но не в пони.
Не стоит использовать email_spec, поэтому приветствуются любые другие идеи для тестирования писем с использованием rspec в sinatra =)
2 ответа
В итоге я посмотрел на файл спецификации пони и украл у него код, чтобы написать свои спецификации =)
Вот что у меня есть:
./spec/spec_helper.rb
def do_not_send_email
Pony.stub!(:deliver) # Hijack deliver method to not send email
end
RSpec.configure do |conf|
conf.include Rack::Test::Methods
conf.mock_with :rspec
# ...
conf.before(:each) do
do_not_send_email
end
end
./spec/integration/invite_user_spec.rb
require_relative '../spec_helper'
feature "Invite user" do
scenario "should send an invitation email" do
visit "/"
click_link "start-btn"
within_fieldset("Invite new user") do
fill_in 'new_user_email', :with => 'franz@gmail.com'
Pony.should_receive(:mail) { |params|
params[:to].should == "franz@gmail.com"
params[:subject].should include("You are invited to blah")
params[:body].should include("You've been invited to blah")
params[:body].should include("/#{@account_id}/new-user/register")
}
click_button 'new_user'
end
page.should have_content("Invitation email has been sent")
end
end
Я не использовал email_spec раньше, но это выглядит довольно круто.
Вы можете увидеть, как я тестирую пони в файле спецификации, который может работать в вашем случае:
https://github.com/benprew/pony/blob/master/spec/pony_spec.rb
Кроме того, вы можете доставлять сообщения через: test, и он будет использовать тестовый почтовик, включенный в mail:
См. "Использование почты с тестированием или спецификацией библиотек" на https://github.com/mikel/mail для примера проверки тестовых сообщений.