如果我使用 :post 调用 Controller 方法,我想测试是否发送了电子邮件。我将使用 email_spec 所以我在这里尝试了这个:http://rubydoc.info/gems/email_spec/1.2.1/file/README.rdoc#Testing_In_Isolation
但它不起作用,因为我将模型对象的实例传递给了交付方法,并且在交付之前保存了该实例。
我试图创建模型对象的另一个实例,但 ID 不一样。
我的 Controller 方法如下所示:
def create
@params = params[:reservation]
@reservation = Reservation.new(@params)
if @reservation.save
ReservationMailer.confirm_email(@reservation).deliver
redirect_to success_path
else
@title = "Reservation"
render 'new'
end
end
你有什么想法来解决这个问题吗?
最佳答案
假设您的测试环境以通常的方式设置(即,您有 config.action_mailer.delivery_method = :test
),然后将发送的电子邮件插入到全局数组 ActionMailer::Base.deliveries
中。如 Mail::Message
实例。您可以从测试用例中读取该信息并确保电子邮件符合预期。见 here .
关于ruby-on-rails-3 - 如果发送电子邮件,如何使用 RSpec 进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7284413/