Недавно я переключил приложение rails для отправки почты через amazon ses. Отправка почты работает отлично, однако испытания терпят неудачу вокруг почтовых отправлений со следующей ошибкой:Rspec тесты не работают при использовании amazon ses отправка почты
TypeError: can't convert Fixnum into String # (eval):3:in 'send_raw_email'
У меня есть настройки почты тестовой среды набор правильно: тест
config.action_mailer.delivery_method = :test
Я могу предотвратить ошибки, не отправляя электронные письма, но затем я получаю ошибки о том, что почта не доставляется.
config.action_mailer.perform_deliveries = false
should_change -> { ActionMailer::Base.deliveries.size } do
result should have changed, but is still 0
версии Gem ниже:
rails (3.2.12)
rspec (2.8.0)
cucumber (2.3.3)
aws-sdk (1.33.0)
Любые предложения о том, что происходит, или как работать вокруг этого. Если какая-либо другая информация необходима, дайте мне знать. Это отлично работало, прежде чем я переключил отправку почты на использование amazon ses.
EDIT:
Тесты, которые терпят неудачу, все, что связаны по электронной почте отправляется с использованием Поставлять
BlahMailer.send_invite(team).deliver
Это внутри модели и контроллер, тесты просто вызвать соответствующий маршрут контроллер или вызвать связанную функцию в модели. Не уверен, что еще показывать, так как ошибка показывает, что это происходит от send_raw_email, которая является функцией ses, а не кода из приложения.
EDIT 2: Больше кода
Вот один из тестов, в этом примере он устанавливает завод по модели и каждый тест.
before :each do
subject = Factory(:ticket, action_type: 'name_change', team_name: 'test123')
end
Вот завод в RSpec
Factory.define :ticket do |ticket|
team = nil
ticket.team { team = Factory(:team) }
ticket.creator { team.captain }
ticket.subject { Factory(:team_assignment, team: team, user: Factory(:active_user)).user }
end
А потом вот код в модели вокруг, где электронная почта отправляется
%w(requested approved cancelled accepted).each do |state|
define_method "notify_#{state}" do
TicketMailer.send("#{action_type}_#{state}", self).deliver
end
end
Я попытался положить в прямой текст для в основном все, что связано с почтовой программой, просто чтобы убедиться, что с этим нет никаких проблем. Если вам больше нужна модель или фактическая почтовая программа, дайте мне знать. Я просто не могу понять, где это умирает. Мой единственный вывод - это просто ошибка со старыми версиями aws sdk и rspec gems. Я даже попытался заменить aws-sdk более новыми версиями, но все еще не удалось заставить что-нибудь еще работать.
Вам нужно будет показать больше кода для тех, кто поможет. [Изменить] (http://stackoverflow.com/posts/37216571/edit) ваш вопрос, чтобы включить как тестируемый метод, так и тест или тесты, которые не работают. –
Добавил больше, не знаю, что еще я могу вам показать, поскольку все, что делает звонок, это делать .deliver и работал до того, как я изменил метод доставки: amazon_ses. Может ли это быть проблемой с драгоценным камнем aws-sdk? – Mentch
Что такое 'команда' в этом случае? Включение большего контекста кода было бы полезно. –