4

我正在编写一些 rspec 测试,我注意到访问我的 Mailer 类时它变慢了。有没有办法完全模拟 ActionMailer::Base 类,以便我可以在电子邮件传递之前和之后测试控制器的其他组件?

这是我的邮件类定义

class OrganisationMailer < ActionMailer::Base
# code to send emails
end

这是我写的测试之一

require 'spec_helper'

describe OrganisationsController do

  describe "#email_single" do
    context "With email address" do 
      let(:org) {Organisation.make!}

      it "redirects to listing" do
        get :email_single, :id => org.id
        response.should redirect_to(organisations_path)
      end
    end
  end
end
4

1 回答 1

1

这很难用您包含​​的小片段来回答,但是您应该能够删除控制器发送到的任何消息,OrganisationMailer以便它们在您不关心执行该逻辑的 rspec 示例中是无操作的。

或者,您可以OrganisationMailer使用以下命令替换测试替身stub_const

stub_const("OrganisationMailer", my_test_double)

然后就可以完全控制controller和mailer的交互了。

于 2012-12-30T07:34:21.897 回答