2012-11-15 9 views
5

Ho seguito le istruzioni per devise_async come da README e sto eseguendo Devise 2.1.2 e delayed_job. Nei miei test di cetriolo, non ricevo più l'e-mail di conferma come parte del processo di registrazione. C'è qualcosa che dovrei fare come parte dei test? Ho già impostato il lavoro in ritardo per saltare il ritardo effettivo per il test impostando quanto segue nel mio ambiente di test.Come posso ottenere che devise_async funzioni con Cucumber?

Delayed::Worker.delay_jobs = false 

Ma anche con questo set su true, non riesce ancora, anche se più lentamente. Se rimuovo la gemma devise_async e le righe pertinenti, tutto ritorna alla vita.

Grazie, Graeme

+0

sto lottando per ottenere devise_async lavorare con cetriolo pure. Stiamo usando sidekiq, non delayed_job, quindi le tue soluzioni non si applicano a me. Ho impostato la strategia più pulita per il troncamento, ma non riesce ancora. Qualcuno sa come fare bene questi giochi? – Jazz

risposta

3

La nuova versione di devise-async attiva le e-mail dopo che il record è stato eseguito nel database. Con RSpec, ogni test viene incluso in una transazione per impostazione predefinita. Cucumber fa lo stesso? In tal caso, dovrai disattivare queste transazioni di prova.

Ecco quello che uso per RSpec: http://www.denniskuczynski.com/2012/06/22/changing-individual-test-configuration-based-on-passed-in-options.html

+1

Ciao Dennis. Passando al troncamento per la mia strategia di pulizia del database, sono stati risolti i test non riusciti. Grandi cose! Ora sto lottando con l'utilizzo delle transazioni per la maggior parte dei test e il troncamento per i test selezionati, ma lo salverò per una domanda diversa. Molte grazie, – Simmo

+1

Dennis, non sono riuscito a far passare le strategie usando il tuo succo. Ho dovuto modificare l'istruzione if in "if example.metadata [: with_transaction_callbacks]" da example.options. Usando rspec 2.12.0 – Agustin

+0

@Dennis Kuczynski hai cambiato qualcosa sul tuo blog e il link è rotto, per favore copia altri dettagli nella risposta, google versione cache http://webcache.googleusercontent.com/search?q=cache:endxdMrzntoJ: www.denniskuczynski.com/2012/06/22/changing-individual-test-configuration-based-on-passed-in-options.html+http://denniskuczynski.com/2012/06/22/changing-individual- test-configuration-based-on-passed-in-options.html & cd = 1 & hl = pl & ct = clnk –

1

Hai provato utilizzando l'approccio Worker.new.work_off ritardata ::? Non sono sicuro che funzioni per Devise async, ma in precedenza ha funzionato per controllare le e-mail.

Utilizzando questo passaggio

Given /^Jobs are being dispatched$/ do 
    Delayed::Worker.new.work_off 
end 

E l'esecuzione di questo passo prima di testare le email?

+0

Ho provato questo, ma sfortunatamente non ha funzionato per me. – Simmo

1

Nel caso in cui si utilizza ideare-async con sidekiq, come alcuni commentatori qui chiedono, la soluzione è quella di sottoporre a test i lavoratori in linea:

require 'sidekiq/testing' 
Sidekiq::Testing.inline! 

Vedi https://github.com/mperham/sidekiq/wiki/Testing

Problemi correlati