capybara-emailを利用してRailsアプリでのメールの送受信を試験する
はじめに
今どきメールで仕事をしているエンジニアは駄目、といった威力的なトークが日常的に交わされている昨今。それでも圧倒的に多くの業界で、メールは標準的なコミュニケーションツールです。その実装を求められることは日常茶飯事です。
必然的に発生するのが、メールの送受信に関する試験ではないでしょうか。取り分け統合試験において、メールの送受信をモックで対応した結果、本番環境ではその部分でのオペレーションが原因で障害が発生、みたいな話は割と耳にします。
実装
capybara-emailをインストールします。
gem install capybara-email
他の試験関係のgemと同様に、features/support/env.rbにてrequireします。また、これと併せてcapybara-emailのモジュールのメソッドを、CucumberのWorldに追加します。
require 'capybara/email'
World(Capybara::Email::DSL)
stepsにおける記述は以下のような形となります。
open_email(email_address)
expect(current_email.subject).to eq subject
Capybara::Eamil::DSLで定義されているメソッドは以下の通りです。
- current_email
- current_emails
- all_emails
- emails_sent_to
- first_email_sent_to
- open_email
- clear_email
- clear_emails
open_emailはfirst_email_sent_toのalias、clear_emailはclear_emailsのaliasです。
また、current_emailの戻り値はCapybara::Node::Emailというインスタンスとなり、以下のメソッドが利用可能です。
- body
- body_as_simple_node
- header
- headers
- inspect
- save_page
- save_and_open
こちらのgemはスターの数こそ若干少ないですが、古くからしっかりとメンテナンスされている優れたプロジェクトでございます。group: :testなgemということもありまして、個人的には割と躊躇せずに利用させて頂いております。