2016-03-26 1 views
0

UserモデルのDevise#confirmableのユーザーに対して、定期的に一連の仕様を実行して、SendGridでアカウントをブロックする最も簡単な方法を学びました。どのように確認し、仕様を実行し、SendGridを爆破しないでください?

今後この問題を回避する方法がありますか?

User Factoryconfirmed_at = Time.nowに設定しました。私が実際に問題を解決したかどうか、さらに良い方法があるかどうかを確認したい。

Woopsee-ヒナギク... enter image description here

ここに私の工場/ user.rb

FactoryGirl.define do 
    sequence(:email) { |n| "user#{n}@factory.com" } 

    factory :user, aliases: [:author, :commenter] do 
    first_name Faker::Name.first_name 
    last_name Faker::Name.last_name 
    confirmed_at Time.now 
    email 
    title 'This is a title' 
    password 'password' 
    access_code ENV['access_code_secret'] 
    end 
end 

ここに私のdb/seeds.rbは

ほとんど
# Create users 
15.times do 
    users << User.create!(
    first_name: Faker::Name.first_name, 
    last_name: Faker::Name.last_name, 
    email: Faker::Internet.email, 
    confirmed_at: Time.now, 
    title: Faker::Hipster.sentence, 
    bio: Faker::Hipster.paragraph, 
    password: Faker::Internet.password(8), 
    access_code: ENV['access_code_secret'] 
) 
end 

... 

答えて

0

だです最も一般的な方法は、

# Tell Action Mailer not to deliver emails to the real world. 
# The :test delivery method accumulates sent emails in the 
# ActionMailer::Base.deliveries array. 
config.action_mailer.delivery_method = :test 

をする代わりに、あなたのテストを実行しながら、実際の電子メールRailsはActionMailer::Base.deliveriesという名前の配列にメールを追加し送信するのでは:テストを実行するときにすべてのメールを送信しないようにconfig/environments/test.rb。それで、あなたはまだ以下のようなテストを書くことができます:

expect { create(:user) }.to change { ActionMailer::Base.deliveries }.by(1) 
expect(ActionMailer::Base.deliveries.last.to).to equal('[email protected]') 
+0

私はすでに 'config/environments/test.rb'で設定されています。問題は私の「シード」データによると思っています。その目的のために 'ActionMailer'を避けることは可能でしょうか? – binarymason

関連する問題