2016-04-12 34 views
0

私はDeviseを使用してユーザーを管理しています。開発モードでは動作しますが、テストでは動作しません。開発中に、User.inviteを呼び出してください!招待状を正常に送信します。テストでは、メッセージは黙って失敗します。エラーはなく、すべての招待関連フィールドの値はゼロです。メーラー数は増えません。Invitableは、テスト環境で招待状を作成しません。

1) with inviting user should generate invite token 
    Failure/Error: expect(user.invitation_token).to_not be_nil 

     expected: not nil 
      got: nil 
    # ./spec/mailer/mailer_spec.rb:20:in `block (2 levels) in <top (required)>' 

    2) with inviting user should send an email 
    Failure/Error: expect(Devise.mailer.deliveries.count).to eq(1) 

     expected: 1 
      got: 0 

     (compared using ==) 
    # ./spec/mailer/mailer_spec.rb:28:in `block (2 levels) in <top (required)>' 

私は一種の困惑:ここ

は私のテストは、両方のテストが失敗

require "rails_helper" 
describe "with inviting user" do 

    let(:user) { create(:user) } 
    before(:each) do 

     Devise.mailer.deliveries = [] 

     User.invite!({email: user.email}, user) 
    end 

    after(:each) do 
     Devise.mailer.deliveries.clear 
    end 

    it 'should generate invite token' do 
     expect(user.invitation_token).to_not be_nil 
    end 

    it 'should send an email' do 

     expect(Devise.mailer.deliveries.count).to eq(1) 
    end 
end 

(FactoryGirlとRSpecのを使用して)次のようになります。何か案は?

+0

また、私はconfig/environments/test.rbにconfig.action_mailer.perform_deliveries = trueも設定しました。 – nilatti

+0

これは 'config.action_mailer.delivery_method =:test'と同様です。 –

+0

はい、それはデフォルトで設定されています:config.action_mailer.delivery_method =:test – nilatti

答えて

0

ActionMailer::Base.deliveriesの配達をチェックしてみましたか?私はあなたの電子メールがあると思います。

+0

また、0に残っています。私はDevise.mailerを使用していました.ActionMailerに何も表示されていなかったため、DeviseがActionMailer 。 – nilatti

+0

おかしい。私のテストenvで、 'ActionMailer :: Base.deliveries'は私のDeviseのメールで確実に取り込まれます。私は自分の設定を詳しく見ていきます。私はあなたの開発環境で電子メールが実際に送信されていることを取る? :-) –

+0

はい、それは送信しています。自分の仕事のメールアドレスで私の同僚に送ることができます。それは、開発者のThunderbirdボックスに表示されます。 – nilatti

関連する問題