Versuch, mit delay_job_active_record ein Upgrade auf Rails 4.2 durchzuführen. Ich habe das verzögerte_job-Backend für die Testumgebung nicht so festgelegt, dass Jobs sofort ausgeführt werden.
Ich versuche, die neue Methode 'Deliver_Later' mit Rspec zu testen, bin mir aber nicht sicher, wie.
Alter Controller-Code:
ServiceMailer.delay.new_user(@user)
Neuer Controller-Code:
ServiceMailer.new_user(@user).deliver_later
Ich habe es so getestet:
expect(ServiceMailer).to receive(:new_user).with(@user).and_return(double("mailer", :deliver => true))
Jetzt bekomme ich Fehler damit. (Doppelter "Mailer" hat unerwartete Nachricht erhalten: Deliver_Later mit (keine Argumente))
Gerade
expect(ServiceMailer).to receive(:new_user)
schlägt auch mit 'undefinierter Methode' liefern_later 'für nil: NilClass' fehl
Ich habe einige Beispiele ausprobiert, mit denen Sie mithilfe von test_helper in ActiveJob feststellen können, ob Jobs in die Warteschlange gestellt wurden. Es ist mir jedoch nicht gelungen, zu testen, ob der richtige Job in der Warteschlange steht.
expect(enqueued_jobs.size).to eq(1)
Dies ist erfolgreich, wenn test_helper enthalten ist, aber ich kann nicht überprüfen, ob es sich um die richtige E-Mail handelt, die gesendet wird.
Was ich tun möchte ist:
- Testen Sie, ob die richtige E-Mail in der Warteschlange steht (oder sofort in test env ausgeführt wird).
- mit den richtigen Parametern (@user)
Irgendwelche Ideen?? Vielen Dank