【发布时间】:2011-04-29 02:26:17
【问题描述】:
我正在使用 rspec,当我运行 rake spec 时,用户邮件程序通过 smtp 发送电子邮件,而不是将电子邮件存储在 ActionMailer::Base.deliveries-array 中(由用户观察者调用)...
你能告诉我为什么吗?
# Rails version
rails -v
=> Rails 3.0.1
# Ruby version with rvm (rvm version 1.0.16)
ruby -v
=> ruby 1.9.2p7 (2010-09-29 revision 29373) [x86_64-darwin10.4.0]
# Gemfile
gem "rspec-rails", ">= 2.0.1"
配置文件:
# config/environments/test.rb
MyApp::Application.configure do
config.action_mailer.delivery_method = :test
config.action_mailer.raise_delivery_errors = true
end
# spec/spec_helper.rb
...
ENV["RAILS_ENV"] ||= 'test'
...
# app/models/user_observer.rb
class UserObserver < ActiveRecord::Observer
observe User
def after_create(record)
puts Rails.env
# => "test"
UserMailer.new_user_notification(record).deliver
puts ActionMailer::Base.deliveries.inspect
# => []
# Sends it via smtp!
end
end
【问题讨论】:
-
您的测试环境中的 Mailer 配置是什么?
标签: ruby-on-rails email ruby-on-rails-3 rspec observer-pattern