2012-01-13 87 views
0

所以問題是郵件沒有被添加到ActionMailer :: Base.deliveries。與工廠女孩建設的麻煩

FactoryGirl.create返回零。我究竟做錯了什麼?

FactoryGirl.define do 
    factory :provisional_user do 
    sequence(:email) { |n| "bangbang_#{n}@example.com" } 
    first_name "Provisional" 
    last_name "User" 
    partner "source2" 
    unsubscribed false 
    end 

    factory(:unsubscribed_user, :parent => :provisional_user, :class => ProvisionalUser) do 
    sequence(:email) { |n| "[email protected]" } 
    first_name "Unsubscribed" 
    last_name "User" 
    partner "source2" 
    unsubscribed true 
    end 


    factory(:subscribed_user, :class => ProvisionalUser) do 
    sequence(:email) { |n| "[email protected]" } 
    first_name "Subscribed" 
    last_name "User" 
    partner "source2" 
    unsubscribed false 
    end 
    ... 
end 

然後在我的測試(我也嘗試FactoryGirl.create沒有節省以下行!):

require "rspec" 
require "spec_helper" 
require "action_mailer" 

describe "unsubscribe functionality" do 

    before(:each) do 
    ActionMailer::Base.deliveries = [] 
    end 

    it "should send emails to subscribed users only" do 
    unsubscribed_user = FactoryGirl.build(:unsubscribed_user) 
    unsubscribed_user.save! 

    subscribed_user = FactoryGirl.create(:subscribed_user) 
    puts "the user is" + subscribed_user.to_s 
    CoRegEmailWorker.perform 
    #sent.length.should == 1 
    sent.first.email.should =~ subscribed_user.email 
    sent.first.email.should_not =~ unsubscribed_user.email 
    end 

    def sent 
    ActionMailer::Base.deliveries 
    end 

end 

,但它的失敗是這樣的:

Failure/Error: sent.first.email.should =~ subscribed_user.email 
    NoMethodError: 
    undefined method `email' for nil:NilClass 
    # ./spec/mailers/provisional_users_notifier_spec.rb:21 

回答

1

在你放在這裏的代碼,你只定義了unsubscribed_user,但沒有subscribed_user,所以subscribed_user將是零,並且可能有問題。

+0

對不起,我更新我的職務。我有subscribed_user。 – Ramy 2012-01-13 17:54:49

+0

@Ramy,對不起,我沒有那麼清楚......我的意思是在測試中,你做unsubscribed_user = factory_girl.build(...),但是沒有定義一個訂閱用戶 – mornaner 2012-01-13 18:15:08

+0

對不起,它是在上面的部分該函數在「before_each」調用之前。我更新了我的帖子。 – Ramy 2012-01-13 18:26:03