우리 유닛의 레일 3으로의 업그레이드를 시도하고 있습니다. 지연된 구직자 및 우편 발송자 문제가 지속적으로 발생하고 있습니다. 즉, 테스트가 실행될 때 우편 발송자가 "보내지는"것은 아닙니다.레일즈 3 지연된 작업 - 레일 3로 업그레이드하면 delayed_job 작업이 중단됩니다.
은 다소간 다음과 같습니다 우리의 테스트 도우미에 "assert_email"방법을 통해 우리는 그들 모두를 실행 보낸 이메일을 테스트하려면 :
def process_delayed_jobs
while Delayed::Worker.new(:quiet => true).send(:reserve_and_run_one_job) do
# nothing
end
end
alias_method :deliver_delayed_emails, :process_delayed_jobs
def assert_emails(number, skip_assertion = false)
deliver_delayed_emails # start with a clean slate
if block_given?
original_count = ActionMailer::Base.deliveries.size
yield
deliver_delayed_emails
new_count = ActionMailer::Base.deliveries.size
assert_equal original_count + number, new_count, "#{number} emails expected, but #{new_count - original_count} were sent" unless skip_assertion
else
assert_equal number, ActionMailer::Base.deliveries.size unless skip_assertion
end
end
우리는과 같이이에서 테스트 :
assert_emails 2 do
Model.action_that_sends_mailer
end
이 코드는 delayed_job 2.0.5를 실행하는 Rails 2에서 완벽하게 작동합니다. Rails 3에서는 2.1.4를 실행 중입니다.
"0"이메일이 전송되기 때문에 기본적으로 테스트가 실패합니다. 메일러 자체가 제대로 업그레이드되고 메소드 호출에서 잘못된 ".diver"를 제거하여 제거합니다. delayed_jobs 로그는 비어 있으므로 아무 것도 처리되지 않는 것처럼 보입니다.
여기에 일종의 핵심 (그러나 쉬운) 구문 문제가 누락 된 것처럼 느껴집니다. 어떤 도움을 주셔서 감사합니다.
편집 : "delayed_job start"및 "script/delayed_job start"둘 다 사용하여 로컬 컴퓨터에서 delayed_job 프로세스를 시작했음을 유의해야합니다. 문제를 해결할 수도 없습니다.
'method_call '이 무엇인지 알려주세요. –