Спецификация огурца / капибары / электронной почты не работает с Selenium Driver - PullRequest
3 голосов
/ 22 ноября 2011

Я провел несколько тестов на огурец / капибару. Я использовал email_spec gem для проверки почтовых сообщений. Некоторые шаги, где вроде «И« кто-то@email.com »должен получить электронное письмо». Они не дают проблем, когда я запускаю тест с использованием драйвера rack_test. Однако они терпят неудачу при использовании драйвера селена:

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

Можете ли вы помочь мне? Спасибо

1 Ответ

2 голосов
/ 23 ноября 2011

Вы должны поместить свои электронные письма в файл, потому что по умолчанию rails в тестовой среде environemnt сохраняет их в статической переменной, к которой нельзя получить доступ из тестовой цепочки.Если вы используете 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
...