たとえばadminしか新規ユーザーを作成できないという仕様で、adminの場合だけユーザー作成画面を表示できることをテストをしたい場合、結果をStep文に含めてしまうと便利なことがあります。
#language: ja
フィーチャ:新規ユーザーの作成
ユーザーとして
新規ユーザー作成画面を表示したい
roleによって新規作成できることを制限したい。
シナリオアウトライン:admin以上であればユーザー新規作成画面を表示できる。
前提 role”<role>”としてログインしている
かつ “ユーザー新規作成画面”へ行く
ならば “<message>”と表示され<boolean>はずだ
例:
| role | message | boolean |
| admin | CanCan::AccessDenied | ない |
| manager | CanCan::AccessDenied | る |
| staff | CanCan::AccessDenied | る |
上記の場合は表示され(る)か(ない)が入るので、ステップ定義で
ならば /^”([^”]*)”と表示されるはずだ$/ do |message|
page.should have_content(message)
end
ならば /^”([^”]*)”と表示されないはずだ$/ do |message|
page.should_not have_content(message)
end
とすると日本語に結果を含めることができてとてもわかりやすくテストが実装できます。
ちなみにユーザー関係の実装はDeviseを用い、roleによる権限はcancanを用いました。上記の例ではCanCan::AccessDeniedが表示されるかどうかをテストしていて、adminの場合は拒否されないので表示されないことが確認できます。