Rspec/Capybara:如何"期望看到路由错误"?

Dar*_*tos 10 rspec ruby-on-rails capybara

我如何告诉RSpec/Capybara期望路由错误?原因是我希望用户通过PUT点击链接"声明一个盘子",而不是通过GET /访问路径.

基本上我想expect ActionController::RoutingError: No route matches [GET] "/plates/claim/1".

  scenario 'they have to click the claim link' do
    create_plates
    sign_in_as_doctor
    visit claim_plate_path(@plates.first.id)
    ?????
  end
Run Code Online (Sandbox Code Playgroud)

ush*_*sha 11

试试这个

 scenario 'they have to click the claim link' do
    create_plates
    sign_in_as_doctor
    expect{visit claim_plate_path(@plates.first.id)}.to raise_error( ActionController::RoutingError)
  end
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是,当你期望引发错误时,你必须传递一个proc(带有大括号)而不是简单地用括号调用它. (8认同)
  • 使用Minitest:`assert_raises(Exception){visit claim_plate_path}` (3认同)