2011-12-14 1 views
2

私はポニーをサポートしていると言うemail_specを試していますが、私はsinatraアプリで電子メールをテストする方法についてはわかりません。 readmeの例では、レールActionMailerを使用していますが、Ponyでは使用していません。 )=rspecを使用してSinatraアプリでPonyのメール送信をテストするにはどうすればよいですか?

email_spec使用についての貴重なので、シナトラにRSpecのを使用して電子メールをテストするための任意の他のアイデアを歓迎しているわけではありません

答えて

1

私は前にemail_spec使用していないが、それはかなりクールに見えます。

あなたは私があなたのケースのために働くことがspecファイルにポニーをテストする方法を見ることができます。

https://github.com/benprew/pony/blob/master/spec/pony_spec.rb

また、あなたが経由でメッセージを配信することができますテスト、およびそれが含まれたテストメーラーを使用します。 mail:

テストメッセージの検査の例については、https://github.com/mikel/mailの「テストまたは仕様ライブラリでのメールの使用」を参照してください。

+0

これは私がやったことです - あなたの仕様ファイルからコードを盗んだ;) – zlog

3

I

これは私が持っているものである)= pony spec fileを見て、私の仕様を作成し、そこからコードを盗んでしまった:

./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 => '[email protected]' 

     Pony.should_receive(:mail) { |params| 
     params[:to].should == "[email protected]" 
     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 
関連する問題