2015-08-22 2 views
2

Каждый раз, когда я запускаю тесты, отправляются электронные письма. Мой config/environments/test.rb имеет такую ​​конфигурациюRails 4 отправка писем в среде «Test»

config.action_mailer.delivery_method = :test 

Так что я подумал, что всякий раз, когда я запускаю тест, они не должны быть действительно послал, но когда я запускаю команду

RAILS_ENV="test" rake test 

Письма присылают так или иначе. На мгновение я подумал, что, может быть, я не использовал правильную среду. Но затем я полностью удалил db/test.sqlite3 и сразу после того, как снова запустил тесты. Файл снова был восстановлен, что доказывает, что я действительно работаю в среде test.

Что происходит? Почему мои тесты отправляют реальные письма? Может ли это иметь какое-либо отношение к тому факту, что я использую deliver_now в своем приложении?

+0

У вас есть другой оператор config.action_mailer.delivery_method' в вашем _environment.rb_ или в некоторых из ваших инициализаторов? –

+0

Нет, у меня их больше нет. –

ответ

0

Вы должны, по крайней мере, иметь возможность отключить их размещения

config.action_mailer.perform_deliveries = false 

в вашем средах/test.rb как предложено Brent Sullivan в his answer.

+0

Magic! Благодаря! Еще странно, что: тест не работал, но это делает это :) –

0

Имея строку ActionMailer::Base.delivery_method = :smtp в config/environment.rb переопределяет ActionMailer::Base.delivery_method = :test в config/environments/test.rb.

удалите эту строку, ActionMailer::Base.delivery_method = :smtp' от config/environment.rb и поместите ее в config/environments/production.rb. Это позволяет разместить ActionMailer::Base.delivery_method = :test в config/environments/test.rb и версию, которую вы хотите в config/environments/development.rb.

Смежные вопросы