我正在尝试email_spec,它说它支持 Pony,但我不确定如何在 sinatra 应用程序中测试电子邮件。自述文件中的示例显示了 rails 的用法ActionMailer
,但在 Pony 中没有。
使用 email_spec 并不珍贵,因此欢迎在 sinatra 中使用 rspec 测试电子邮件的任何其他想法 =)
我正在尝试email_spec,它说它支持 Pony,但我不确定如何在 sinatra 应用程序中测试电子邮件。自述文件中的示例显示了 rails 的用法ActionMailer
,但在 Pony 中没有。
使用 email_spec 并不珍贵,因此欢迎在 sinatra 中使用 rspec 测试电子邮件的任何其他想法 =)
我最终查看了小马规范文件,并从中窃取代码来编写我的规范 =)
这就是我所拥有的:
./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 传递消息,它将使用邮件中包含的测试邮件:
有关检查测试消息的示例,请参阅https://github.com/mikel/mail上的“将邮件与测试或规范库一起使用” 。