2017-05-17 13 views
0

최근에 제가 현재 진행중인 프로젝트에서 통합 테스트에서 많은 코드가 주석 처리 된 것을 발견했습니다. 다른 개발자에게 물어 보았습니다. 많이 변경했습니다 ActiveJobperform_laterperform_now으로 전화하여 속도가 느려지고 assert_enqueued_jobs은 지금 수행되는 작업을 포착 할 수 없습니다.레일에서`perform_now` 작업을 어떻게 테스트 할 수 있습니까?

assert_performed_jobs을 사용해 보았지만 제대로 작동하지 않았습니다.

누구나 내게 통찰력이나 제안을 테스트 해 줄 수 있습니까? 아니면 그냥 테스트 할 수 없습니까?

답변

1

Untestable? 못!

assert_enqueded_jobs은 코드를 실제로 테스트하지 않고 나중에 실제로 발생하도록 대기열에 넣었습니다. 뭔가 문제가 발생하면 대기열에 넣었는지 테스트하십시오.

ActiveJob::TestHelpers 중 하나를 사용하여 대기열을 유지하고 작업을 수행/삭제하도록하려고합니다. 하지만 그건 나만의 것이지 별 차이가 없다.

https://apidock.com/rails/v4.2.1/ActiveJob/TestHelper/assert_enqueued_jobs

은 당신의 작업이 바로 ActiveJob#perform_now에 전화 ActionMailer::Base.deliveries.count을 확인, 일부 이메일을 보내도록했다 말해봐. 이 시점에서 실제 테스트는 작업에 맞게 조정됩니다.

Notification을 생성 할 수 있으며, Notification.count이 변경되었다고 주장 할 수 있습니다.

중요한 점은 작업이 대기열에 들어가고 스토리가 끝났는지 확인하는 대신 실행중인 작업에서 원하는 결과를 찾는 것입니다.

+0

설명 주셔서 감사합니다. 정말 도움이됩니다. –