ユーザーのメールをテストしたいだけなので、これがあります:
FactoryGirl.define do
factory :user do |u|
u.sequence(:email) {|n| "user#{n}@example.com" }
u.first_name { Faker::Name.first_name }
u.password "foo123"
end
end
アップデート
ご覧のとおり、メールを生成しているsequence
ので、ユーザーの正しいメールアドレスを指しているかどうかをテストしたいと思います。例として、から正しいユーザーにメールを送信したいと思いますcontroller
。
let(:user) { FactoryGirl.create(:user) }
it "should notify user about his profile" do
@user = FactoryGirl.create(:user)
# profile update..
ActionMailer::Base.deliveries.should include [@user.email]
end
上記のテストはuser.email
、FactoryGirl によって作成されたものではなく、別の電子メール アドレスを指しているため失敗します。
1) UserController Manage users should notify user about his profile
Failure/Error: ActionMailer::Base.deliveries.should include [user.email]
expected [#<Mail::Message:5059500, Multipart: false, Headers: <From: foo <info@foo.com>>, <To: user16@example.com>, <Message-ID: <..41d@linux.mail>>, <Subject: foo>, <Content-Type: text/html>, <Content-Transfer-Encoding: 7bit>>] to include ["user15@example.com"]
Diff:
@@ -1,2 +1,2 @@
-[["user15@example.com"]]
+[#<Mail::Message:5059500, Multipart: false, Headers: <..>, <From: foo Verticals <info@castaclip.com>>, <To: user16@example.com>, <Message-ID: <..41d@linux.mail>>, <Subject: foo>, <Content-Type: text/html>, <Content-Transfer-Encoding: 7bit>>]
助けはありますか?tnx。