我想知道如何简单地允许所有异常在请求规范中间冒泡到 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>
那么,我的问题是如何完全禁用该 rails 错误处理,所以 NoMethodError 一直冒泡到 rspec?
谢谢!