[ruby] Cucumberを使ってメールを含む操作のテストを書いてみた

パスワードを忘れた際のパスワード再設定操作のテストを Cucumber で書いてみました。
http://cukes.info/images/cuke_logo.png

UK STUDIOブログの Cucumber+email_specでActionMailerのテストをする に書かれているように Cucumber はメールを含む一連の操作をテストできます。

インストールと初期設定

メールのテストを行うプラグイン Email Spec をインストールします。

gem install bmabey-email_spec

features/support/env.rb に以下を追加します。GitHubに書かれているだけではエラーになってしまいました。

require 'email_spec'
require 'email_spec/cucumber'
cd Railsプロジェクト 
script/generate email_spec 

2009/10/30 追加


email_steps.rbの日本語版は UK STUDIOブログ に書かれています。 ありがとうございます!
これを email_ja_steps.rbとして保存します。

feature

こんな感じです

フィーチャ: パスワードの再設定
  利用者がパスワードを忘れた時
  
  シナリオ: パスワード再設定メールを使い新しいパスワードを設定し、ログインしてみる
    前提 メールボックスが空になっている
    かつ "ログインページ" へアクセス
    もし "パスワードを忘れたら"リンクをクリックする
    ならば "パスワード再設定"と表示されていること
    
    もし "メールアドレス"に"xxxx@xxxx.com"と入力する
    かつ "送信"ボタンをクリックする
    ならば "xxxx@xxxx.com" がメールを1通受信していること
    
    もし "xxxx@xxxx.com" のメールを開く
    かつ メール中の "password/reset" リンクを開く
    ならば "パスワードの再設定"と表示されていること

    もし "パスワード"に"zzzzzz"と入力する
    かつ "パスワード(確認)"に"zzzzzz"と入力する
    かつ "更新"ボタンをクリックする
    ならば "パスワードを再設定しました"と表示されていること
    
    もし "ログインページ" へアクセス
    かつ "メールアドレス"に"xxxx@xxxx.com"と入力する
    かつ "パスワード"に"zzzzzz"と入力する
    かつ "ログイン"ボタンをクリックする
    ならば "ログイン成功"と表示されていること

「メール中の "〜" リンクを開く」の〜の部分には メールに書かれたURLの部分か、a(アンカー)の文字列を指定します。

感想

メールのやり取りを含むような処理がテストできるのは素晴らしいです!

今回は、UK STUDIOブログ 以外に Email Specのexamples がたいへん参考になりました。