2015-06-16 17 views
9

Tôi mới sử dụng RSpec và TDD và gặp khó khăn khi viết một bài kiểm tra RSpec để kiểm tra xem Devise có thực sự gửi email xác nhận sau khi người dùng đăng ký hay không. Tôi biết rằng ứng dụng của tôi đang hoạt động như mong đợi bởi vì tôi đã kiểm tra vật lý chức năng trong cả phát triển và sản xuất. Tuy nhiên, tôi vẫn phải viết kiểm tra RSpec cho chức năng này và tôi không thể tìm ra cách gửi email xác nhận thông qua các kiểm tra RSpec.Kiểm tra RSpec Devise Mailer

factories/user.rb

FactoryGirl.define do 
    factory :user do 
    name "Jack Sparrow" 
    email { Faker::Internet.email } 
    password "helloworld" 
    password_confirmation "helloworld" 
    confirmed_at Time.now 
    end 
end 

spec/models/user_spec.rb

require 'rails_helper' 

RSpec.describe User, type: :model do 

    describe "user sign up" do 
    before do 
     @user = FactoryGirl.create(:user) 
    end 

    it "should save a user" do 
     expect(@user).to be_valid 
    end 

    it "should send the user an email" do 
     expect(ActionMailer::Base.deliveries.count).to eq 1 
    end 
    end 
end 

Tại sao Vạch không gửi email xác nhận sau khi tôi tạo @user? Kiểm tra của tôi trả về ActionMailer :: Base.deliveries.count = 0. Như tôi đã nói, tôi mới sử dụng RSpec và TDD vì vậy tôi hoàn toàn thiếu một cái gì đó ở đây?

+1

Tôi đoán email đang được gửi trên bộ điều khiển tạo hành động, tại đây bạn chỉ cần tạo người dùng mới và mong muốn email đó gửi một email. Vì vậy, tôi sẽ viết một thử nghiệm cho bộ điều khiển tạo hành động và làm một bài đăng với một số thuộc tính người dùng, bưu phẩm nên được gọi. – neo

+0

Vì vậy, tôi sẽ cần phải viết thử nghiệm trong 'registrations_controller_spec.rb'? –

+1

Đó là điều đó, miễn là email đang được gửi từ đó – neo

Trả lời

4

Devise sử dụng trình gửi thư riêng, vì vậy, hãy thử Devise.mailer.deliveries thay vì ActionMailer::Base.deliveries nếu đặt kiểm tra trong tệp của bộ điều khiển phù hợp không hoạt động.

+0

mong đợi (Devise.mailer.deliveries.count) .to eq 1 đã làm việc cho tôi, cảm ơn bạn! – rmcsharry

Các vấn đề liên quan