3

私はいくつかのキュウリ/カピバラのテストを実行しました。私はemail_specgemを使用してメールをチェックしています。種類のいくつかのステップ'そして"someone@email.com"は電子メールを受信する必要があります'。Rack_testドライバーを使用してテストを実行しても、問題はありません。ただし、セレンドライバーを使用すると失敗します。

And "someone@email.com" should receive an email                                                                
  expected: 1
       got: 0 (using ==) (RSpec::Expectations::ExpectationNotMetError)

手伝って頂けますか?ありがとう

4

1 に答える 1

2

デフォルトでは、テスト環境のrailsは、テストスレッドからアクセスできない静的変数に電子メールを保存するため、電子メールをファイルに入れる必要があります。rails3を使用している場合は:file、キュウリ環境で配信方法を設定します。Rails 2.xを使用している場合は、これをキュウリの初期化子に入れます。

ActionMailer::Base.class_eval do
  DELIVERIES_CACHE_PATH =
    File.join(RAILS_ROOT,'tmp','cache',"action_mailer_cache_deliveries {ENV['TEST_ENV_NUMBER']}.cache")

  def perform_delivery_cache(mail)
    deliveries = File.open(DELIVERIES_CACHE_PATH, 'r') do |f|
      Marshal.load(f)
    end

    deliveries << mail
    File.open(DELIVERIES_CACHE_PATH,'w') { |f| Marshal.dump(deliveries, f) }
  end

  def self.cached_deliveries
    File.open(DELIVERIES_CACHE_PATH,'r') { |f| Marshal.load(f) }
  end
end

config.action_mailer.delivery_method = :cache
于 2011-11-23T08:09:54.130 に答える