リクエスト仕様の途中で、すべての例外が rspec にバブルアップするのを単純に許可する方法を知りたいです。
例がこれを明確にすることを願っています。次の要求仕様と対応するアプリケーション コードがあるとします。
# user_browses_posts_spec.rb
feature 'User views a post' do
scenario 'this should fail with route missing' do
FactoryGirl.create(:post)
visit(root_path)
click_on('View Post')
end
end
# config/routes.rb
MyApp::Application.routes.draw do
root to: 'posts#index'
# notice I have not defined a :posts resource, so post_path should raise NoMethodError
end
# assume a totally standard app/controllers/posts_controller.rb
# app/views/posts/index.html.erb
<% @posts.each do |post| %>
<%= link_to 'View Post', post_path(post) %> # this line should fail
<% end %>
テストを実行すると、次のように表示されます。
Failure/Error: click_on('View Post')
Capybara::ElementNotFound:
no link or button 'View Post' found
これは、アプリ内から NoMethodError が発生したときに、スペック ランナーが通常の Rails 開発エラー ページ (エラー メッセージ、バックトレース、パラメーターなどを含む) を見たため、問題を認識しなかったためです。
しかし、端末で見たいのは次のとおりです。
Failure/Error: visit(root_path)
NoMethodError:
undefined method `post_path' for #<PostsController:0x007fea60a779c8>
私の質問は、レールのエラー処理を完全に無効にして、NoMethodError が rspec までバブルするようにするにはどうすればよいかということです。
ありがとう!