Ich bin neu in RSpec und TDD und habe Schwierigkeiten beim Schreiben eines RSpec-Tests, um zu testen, ob Devise tatsächlich die Bestätigungs-E-Mail sendet, nachdem sich ein Benutzer angemeldet hat. Ich weiß, dass meine Anwendung wie erwartet funktioniert, da ich die Funktionalität sowohl in der Entwicklung als auch in der Produktion getestet habe. Allerdings muss ich noch den RSpec-Test für diese Funktionalität schreiben und ich kann nicht herausfinden, wie man eine Bestätigungs-E-Mail durch RSpec-Tests sendet.RSpec Test 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
Warum nicht Überlegen Sie sich eine Bestätigung E-Mail zu senden, nachdem ich @user erstellen? Mein Test gibt ActionMailer :: Base.deliveries.count = 0 zurück. Wie ich schon sagte, bin ich neu bei RSpec und TDD, also fehlt mir hier etwas völlig?
Ich vermute, die E-Mail wird auf der Controller erstellen Aktion gesendet, hier erstellen Sie nur einen neuen Benutzer und erwarten, dass es eine E-Mail senden. So würde ich einen Test für die Controller erstellen Aktion schreiben und einen Post mit einigen Benutzerattributen tun, Mailer sollte aufgerufen werden. – neo
Also müsste ich den Test in 'registrations_controller_spec.rb' schreiben? –
Das ist es, solange die E-Mail von dort gesendet wird – neo