2016-09-06 8 views
0

ここで電子メールの確認テストに失敗しました。 devモードでは、すべて正常に動作します。そして私はいくつかの構成が欠けていると思います。電子メールの確認にマイコン仕様が失敗しました

context 'with valid provider data' do 
    before { session["devise.provider_data"] = { provider: 'twitter', uid: '123456' } } 
    it "sends email confirmation" do 
    expect{ post :create, authorization: { email: "[email protected]" } }.to change(ActionMailer::Base.deliveries, :count).by(1) 
    end 
end 

そして、これとエラー

Failure/Error: expect{ post :create, authorization: { email: "[email protected]" } }.to change(ActionMailer::Base.deliveries, :count).by(1) 
    expected #count to have changed by 1, but was changed by 0 

クーロンの誰の助け?

context 'with valid provider data' do 
    before { session["devise.provider_data"] = { provider: 'twitter', uid: '123456' } } 
    before(:each) do 
    ActionMailer::Base.delivery_method = :test 
    ActionMailer::Base.perform_deliveries = true 
    ActionMailer::Base.deliveries = [] 
    end 

    after(:each) do 
    ActionMailer::Base.deliveries.clear 
    end 

    it "sends email confirmation" do 
    expect{ post :create, authorization: { email: "[email protected]" } }.to change(ActionMailer::Base.deliveries, :count).by(1) 
    end 
end 

答えて

2

一部の設定がありません。すべてのあなたのテストスイートに適用する上記の設定をしたい場合は、あなたがあなたのspec/spec_helper.rbファイルに含めることができ

before(:each) do 
    ActionMailer::Base.delivery_method = :test 
    ActionMailer::Base.perform_deliveries = true 
    ActionMailer::Base.deliveries = [] 
end 

after(:each) do 
    ActionMailer::Base.deliveries.clear 
end 

:私は通常のような電子メールの動作をテストするテスト、前に前とコールバックした後でセットアップを行いますconfigureブロック内:

RSpec.configure do |config| 
    ....  

    config.before(:suite) do 
     ActionMailer::Base.delivery_method = :test 
     ActionMailer::Base.perform_deliveries = true 
     ActionMailer::Base.deliveries = [] 
    end 

    config.after(:suite) do 
     ActionMailer::Base.deliveries.clear 
    end 
end 
+0

私のために働いています!私は初心者ですので、このようなものを設定の原因にする方法があるかどうかを教えてください。仕様で直接実行します(私の英語のために申し訳ありません)。 –

+1

の質問を更新しました。 – AbM

関連する問題