최대한 Mailman::Application
블록에서 추출하여 어딘가에 넣어 두는 것이 유용하다고 생각합니다. 그런 다음 해당 처리를 테스트하십시오.
This Railscast (pro-only, sorry)에는 "라우팅 대체"의 예가 있습니다. 기본적으로 대신 같은 일을의
:
Mailman::Application.run do
subject(/Update (\d+)/) do |ticket_id|
...
는 그냥 말 :
Mailman::Application.run do
default do
MailProcessor.receive_mail(message)
end
end
는 그 다음 MailProcessor
클래스는 메시지를 읽고 앱에 적합한 다른 함수를 호출 처리 할 것 (에 따라 메시지의 제목,받는 사람, 보낸 사람 등) RSpec은 올바른 일을 수행하기 위해 MailProcessor
클래스를 테스트합니다.
이것은 rake 작업을 테스트하는 방법과 비슷합니다 (테스트하는 lib 파일에 기능을 넣고 rake 태스크가 lib 파일을 호출하는 것과 비슷합니다). 그런 다음 기능이 테스트되고 있는지 확실히 확인할 수 있습니다 정확히. 레이크 작업에 대해 편집증 환자라면 http://robots.thoughtbot.com/post/11957424161/test-rake-tasks-like-a-boss과 같은 접근 방식을 시도 할 수 있습니다.