2012-12-29 73 views
4

我正在寫一些RSpec的測試,我發現它訪問我的梅勒類時減慢。有沒有一種方法可以完全模擬ActionMailer :: Base類,以便在電子郵件傳遞之前和之後測試控制器的其他組件?RSpec的嘲諷出來的ActionMailer

這裏是我的郵件類定義

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 

回答

1

這是很難與你已經包括了小片段來回答,但你應該能夠將你的控制器發送給OrganisationMailer的任何消息進行分類,以便它們在rspec示例中無操作,您不需要執行該邏輯。

或者,也可以看與雙用stub_const測試替換OrganisationMailer

stub_const("OrganisationMailer", my_test_double) 

然後就可以完全控制在控制器和郵件收發器之間的相互作用。