如何在控制器规范内测试邮件程序

时间:2014-01-27 15:18:55

标签: ruby-on-rails rspec ruby-on-rails-4

我需要检查我的API方法是否发送了电子邮件。基于SO上的各种线程,我最终得到了类似的东西:

require 'spec_helper'

describe Api::V1::IntervieweesController do
  before(:each) do
    @project = FactoryGirl.create(:project)
  end

  describe "POST /api/v1/interviewees/remind_code" do
    before(:each) do
      @interviewee = FactoryGirl.create(:interviewee, project: @project)
    end

    it "sends email with code" do
      post :remind_code, interviewee: { email: @interviewee.email }
      ActionMailer::Base.deliveries.last.to.should == [@interviewee.email]
    end
  end
end

问题是,ActionMailer::Base.deliveries总是nil,即使该方法发送该电子邮件(当我在浏览器中以'正常'方式运行该方法时,在rspec测试之外) 。更有趣的是 - 它在模型规格中运行良好。你知道我可能做错了什么吗?

Rails v4
Ruby v2
rspec v3.0.0.beta1

请记住,我正在测试的控制器操作工作正常,并在生产/开发时发送该电子邮件。

0 个答案:

没有答案