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?
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
Quindi dovrei scrivere il test in "registrations_controller_spec.rb'? –
Ecco, fintanto che l'email viene inviata da lì – neo