ruby-on-rails-3 - 如果发送电子邮件,如何使用 RSpec 进行测试

标签 ruby-on-rails-3 rspec2

如果我使用 :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/

相关文章:

ruby-on-rails - 未定义的方法 `activated?'

ruby-on-rails - 使用 rspec 和 stub 对 Controller 进行故障测试

ruby-on-rails - 请求规范按预期工作; Controller 规范允许 :post when it shouldn't

ruby-on-rails - 为什么 'FactoryGirl.lint' 给出 InvalidFactoryError?

ruby-on-rails - 无方法错误 : undefined method `email' for nil:NilClass : can't send email with devise/sendgrid(Rails 3. 2)

ruby-on-rails - 当我已经在模型中创建关联时,如何测试具有与 FactoryGirl 的 has_one 关联的模型

ruby - 将记录的 created_by 字段检索到 Rails3 中传递的月份和年份?

ruby-on-rails - Zurb Foundation Nav 在 Rails 项目中的风格有限

ruby - 在 Ruby 中重置单例实例

ruby - 为什么我的 rspec 测试使我的对象加倍?