2015-06-16 21 views
9

Sono nuovo a RSpec e TDD e ho difficoltà a scrivere un test RSpec per verificare se Devise sta effettivamente inviando l'e-mail di conferma dopo che un utente si è registrato. So che la mia applicazione funziona come previsto perché ho testato fisicamente la funzionalità sia nello sviluppo che nella produzione. Tuttavia, sono ancora obbligato a scrivere il test RSpec per questa funzionalità e non riesco a capire come inviare un'email di conferma tramite i test di RSpec.RSpec testing 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 

Perché inventare non l'invio di una mail di conferma dopo creo @user? Il mio test restituisce ActionMailer :: Base.deliveries.count = 0. Come ho detto, sono nuovo a RSpec e TDD quindi mi manca qualcosa qui?

+1

Immagino che l'e-mail sia stata inviata sul controller per creare un'azione, qui stai solo creando un nuovo utente e mi aspetto che invii un'email. Quindi dovrei scrivere un test per il controller creare un'azione e fare un post con alcuni attributi utente, il mailer dovrebbe essere invocato. – neo

+0

Quindi dovrei scrivere il test in "registrations_controller_spec.rb'? –

+1

Ecco, fintanto che l'email viene inviata da lì – neo

risposta

4

Devise utilizza il proprio mailer, quindi provare Devise.mailer.deliveries anziché ActionMailer::Base.deliveries se il test nel file del controller corretto non funziona da solo.

+0

expect (Devise.mailer.deliveries.count) .to eq 1 ha funzionato per me, grazie! – rmcsharry

Problemi correlati