2012-11-15 10 views
5

README에 따라 devise_async의 지침을 수행했으며 Devise 2.1.2 및 delayed_job을 사용하고 있습니다. 내 오이 테스트에서 더 이상 가입 과정의 일부로 확인 이메일을받지 않습니다. 테스트의 일환으로해야 할 일이 있습니까? 지연된 작업을 설정하여 테스트 환경에서 다음을 설정하여 테스트 지연 시간을 건너 뜁니다.devise_async를 Cucumber와 함께 사용하려면 어떻게해야합니까?

Delayed::Worker.delay_jobs = false 

이 설정을 true로 설정하더라도 더 천천히 그래도 실패합니다. devise_async gem과 관련 라인을 제거하면 모든 것이 다시 파열됩니다.

감사합니다, 그램

+0

를 참조하십시오. delayed_job이 아닌 sidekiq을 사용하고 있으므로 귀하의 솔루션이 제게 적용되지 않습니다. 클리너 전략을 잘라 내기로 설정했지만 여전히 실패합니다. 누구나이 놀이를 잘하는 법을 아십니까? – Jazz

답변

3

새 버전의 devise-async는 레코드가 데이터베이스에 커밋 된 후에 전자 메일을 트리거합니다. RSpec을 사용하면 각 테스트는 기본적으로 트랜잭션으로 래핑됩니다. 오이도 똑같은가? 이 경우 해당 테스트 트랜잭션을 해제해야합니다. http://www.denniskuczynski.com/2012/06/22/changing-individual-test-configuration-based-on-passed-in-options.html

+1

안녕하세요. 내 DB 정리 전략의 절단으로 전환하면 실패한 테스트가 수정되었습니다. 좋은 물건! 나는 이제 대부분의 테스트와 일부 테스트에서 잘린 트랜잭션을 사용하는 데 어려움을 겪고 있지만 다른 질문을 위해이를 저장합니다. 많은 고마워요, – Simmo

+1

데니스, 요점을 사용하여 전략을 전환 할 수 없었습니다. example.options에서 if 문을 "if example.metadata [: with_transaction_callbacks]"로 변경해야했습니다. rspec 2.12.0을 사용하여 – Agustin

+0

@Dennis Kuczynski 님이 블로그에서 뭔가를 변경했는데 링크가 끊어졌습니다. 답변에 대한 자세한 내용을 복사하십시오. Google 캐시 버전 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- 테스트 구성 on-passed-in-options.html & cd = 1 & hl = pl & ct = clnk –

1

당신이 지연 :: Worker.new.work_off 접근법을 사용하려고 했습니까? Devise async에서는 잘 작동하는지 모르지만 이전에 이메일 확인에 사용되었습니다.

이 단계

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

를 사용하여 이메일을 테스트하기 전에이 단계를 실행?

+0

시도했지만 불행히도 그것은 나를 위해 작동하지 않았다. – Simmo

1

은 사용 고안을-비동기 사이드 커크 (sidekiq)와 함께, 일부 의견 제시 자들이 묻는 바와 같이, 해결책은 테스트가 노동자들을 인라인으로 움직이게하는 것입니다 :

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

는 나뿐만 아니라 오이 작업 devise_async 얻기 위해 고군분투 https://github.com/mperham/sidekiq/wiki/Testing

관련 문제