2

Pony をサポートしていると言われているemail_specを試していますが、sinatraアプリでメールをテストする方法がわかりません。readme の例は railsActionMailerでの使用法を示していますが、Pony では使用されていません。

email_spec の使用は重要ではないため、sinatra で rspec を使用して電子メールをテストするための他のアイデアを歓迎します =)

4

2 に答える 2

3

結局、ポニーのスペックファイルを見て、そこからコードを盗んでスペックを書きました=)

これは私が持っているものです:

./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
于 2011-12-18T12:44:37.250 に答える
2

私は以前に email_spec を使用したことがありませんが、かなりクールに見えます。

スペックファイルでポニーをテストする方法を見ることができます。これはあなたのケースでうまくいくかもしれません:

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

また、:test 経由でメッセージを配信することもできます。これは、メールに含まれているテストメーラーを使用します:

テスト メッセージを調べる例については、https: //github.com/micel/mail の「Using Mail with Testing or Spec'ing Libraries」を参照してください。

于 2011-12-16T19:26:47.673 に答える