Je pense qu'il est utile d'extraire le plus possible de votre bloc Mailman::Application
et de le placer dans votre application quelque part. Ensuite, testez ce traitement.
This Railscast (pro-seulement, désolé) a un exemple de "Une alternative au routage" qui est plutôt bon.
Fondamentalement, au lieu de faire quelque chose comme:
Mailman::Application.run do
subject(/Update (\d+)/) do |ticket_id|
...
vous venez de dire:
Mailman::Application.run do
default do
MailProcessor.receive_mail(message)
end
end
Ensuite, la classe MailProcessor
pourrait gérer la lecture du message et appeler les bons d'autres fonctions dans votre application (selon le sujet du message, le destinataire, l'expéditeur, etc.) Je voudrais alors RSpec tester la classe MailProcessor
pour faire la bonne chose. Ceci est similaire à la façon dont j'approche les tâches de test de rake (mettre la fonctionnalité dans un fichier lib que vous testez, et que la tâche rake appelle simplement le fichier lib.) Ensuite, vous pouvez être certain que la fonctionnalité est testée correctement. Si vous étiez paranoïaque à propos de la tâche de rake, vous pouvez essayer une approche comme: http://robots.thoughtbot.com/post/11957424161/test-rake-tasks-like-a-boss.