Rails newb here。
尝试RSpec测试索引路由的200状态代码。
在我的 index_controller_spec.rb :
中require 'spec_helper'
describe IndexController do
it "should return a 200 status code" do
get root_path
response.status.should be(200)
end
end
routes.rb中:
Tat::Application.routes.draw do
root to: "index#page"
end
index_controller:
class IndexController < ApplicationController
def page
end
end
当我在浏览器上访问时,一切都很好,但RSpec命令行给出错误:
IndexController should return a 200 status code
Failure/Error: get '/'
ActionController::RoutingError:
No route matches {:controller=>"index", :action=>"/"}
# ./spec/controllers/index_controller_spec.rb:6:in `block (2 levels) in <top (required)>
我不明白?!
感谢。
答案 0 :(得分:3)
欢迎来到Rails世界!测试有许多不同的风格。您似乎将控制器测试与路由测试混淆。
您看到此错误是因为root_path
正在返回/
。 RSpec控制器测试中的get :action
用于在该控制器上调用该方法。
如果您发现错误消息,则会显示:action => '/'
要测试您的控制器,请将测试更改为:
require 'spec_helper'
describe IndexController do
it "should return a 200 status code" do
get :page
response.status.should be(200)
end
end
如果您对路由测试感兴趣,请参阅https://www.relishapp.com/rspec/rspec-rails/docs/routing-specs示例:
{ :get => "/" }.
should route_to(
:controller => "index",
:action => "page"
)