Je me demandais simplement comment tester que les requêtes actionmailer sont réellement envoyées à la fonction delayed_job que dans rspec.Rails/Rspec: Test des emails de delayed_job
J'aurais supposé que c'était assez simple, mais ma file d'attente delayed_job ne semble pas s'incrémenter. Code ci-dessous:
Controller:
def create
@contact = Contact.new(params[:contact])
if @contact.save
contactmailer = ContactMailer
contactmailer.delay.contact_message(@contact)
redirect_to(contacts_url)
else
render :action => "new"
end
Spec:
it "queues mail when a contact is created" do
expectedcount = Delayed::Job.count + 1
Contact.stub(:new).with(mock_contact()) { mock_contact(:save => true) }
post :create, :contact => mock_contact
expectedcount.should eq(Delayed::Job.count)
end
deux avant et après l'appel au contrôleur, le Retardé :: Job.count retourne 0. J'ai essayé de prendre le conditionnel du contrôleur, mais je ne peux toujours pas obtenir le nombre de travail retardé à incrémenter.
Toutes les suggestions - Cheer appréciées
J'aime cette façon. Notez que pour être complet, vous devez également tester (séparément) que les tâches retardées sont ajoutées à la table delayed_jobs. – brittohalloran
C'est lisse - merci! – jpwynn