Punditで権限を設定して、権限のないユーザーがそのurlを踏むと403エラーを発生させて403.htmlを表示させるように設定しました。
RSpec側でそれをテストさせようとした時にエラーが発生したので対策したこと。
it 'ユーザー一覧画面を表示させようとすると403エラーが発生する' do
visit admin_users_path
expect(page).to have_http_status(403)
end
bundle exec rspec
で起動させると下のエラーが発生。
Failure/Error: expect(page).to have_http_status(403)
Capybara::NotSupportedByDriverError:
Capybara::Driver::Base#status_code
capybaraがサポートしてないっぽい、、?
ググってみると、ドライバーのseleniumではhttpリクエストを拾えないと言う記事があったので、設定側ではseleniumを指定して、このRSpecファイルのみドライバーの設定を変えることに。
before do
driven_by(:rack_test)
end
エラー解決!!
Finished in 1.59 seconds (files took 7.21 seconds to load)
1 example, 0 failures
あまり意識せずに使っていたドライバー達ですが、知識が深まりました。
Capybaraはテストを実行する環境(ヘッドレスブラウザ)を選択できる。