2015-04-23 8 views
1

Недавно у меня были ошибки при запуске тестов rspec вокруг генерации представлений моей почты, что заставило меня понять, что для некоторых тестов из-за фабрик генерируются 3 или 4 письма (например, я создаю Admin => письмо с подтверждением генерируется приложением).Rspec & FactoryGirl: предотвратить создание писем

Есть ли способ предотвратить создание некоторых писем, когда цель теста не проверяется, отправлено ли электронное письмо?

ответ

2

Несколько вещей, которые вы можете сделать. Во-первых, убедитесь, что у вас есть:

config.action_mailer.delivery_method = :test 

в конфигурации/сред/test.rb (я уверен, что это установлено по умолчанию). Это гарантирует, что электронные письма не отправляются . Однако это все равно будет генерировать их, а затем поместить их в массив (ActionMailer::Base.deliveries).

Чтобы остановить их создание, вы можете издеваться над методом почтовой отправки. Что-то вроде:

allow(MyMailer).to receive(:my_method).and_return { double("Mailer", :deliver => nil)} 
+1

можно альтернативно дразнить ваш аккаунт администратора – floum

+0

Как вы сказали 'config.action_mailer.delivery_method =: test' устанавливается по умолчанию. Я искал что-то более глобальное, но, наверное, мне придется заглушить мои письма. –

+0

Новый синтаксис rspec - 'allow (MyMailer) .to receive (: my_method) {nil}', но я получаю 'undefined метод' deliver 'для nil: NilClass' –

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