Ruby on rails RubyonRails:测试http状态是否成功时出现Rspec路由错误

Ruby on rails RubyonRails:测试http状态是否成功时出现Rspec路由错误,ruby-on-rails,rspec,url-routing,rspec-rails,rails-routing,Ruby On Rails,Rspec,Url Routing,Rspec Rails,Rails Routing,因此,在ruby on rails应用程序中,我很难通过这些规范: require 'rails/all' RSpec.describe WikisController, type: :controller do let(:user) { User.create!(email: "user@email.com", password: "password") } let(:wiki) { Wiki.create!(title: "New Wiki Title", body: "New Wiki

因此,在ruby on rails应用程序中,我很难通过这些规范:

require 'rails/all'

RSpec.describe WikisController, type: :controller do 
let(:user) { User.create!(email: "user@email.com", password: "password") }
let(:wiki) { Wiki.create!(title: "New Wiki Title", body: "New Wiki Body", private: false, user: user) }


   describe "GET show" do
     it "returns http success" do
       get :show
       expect(response).to have_http_status(:success)
     end
   end

   describe "GET edit" do
     it "returns http success" do
       get :edit
       expect(response).to have_http_status(:success)
     end
   end
end
                    root GET    /                              wikis#index
                   wikis GET    /wikis(.:format)               wikis#index
                         POST   /wikis(.:format)               wikis#create
                new_wiki GET    /wikis/new(.:format)           wikis#new
               edit_wiki GET    /wikis/:id/edit(.:format)      wikis#edit
                    wiki GET    /wikis/:id(.:format)           wikis#show
                         PATCH  /wikis/:id(.:format)           wikis#update
                         PUT    /wikis/:id(.:format)           wikis#update
                         DELETE /wikis/:id(.:format)           wikis#destroy
当我运行这些规范时,会出现以下错误:

Failures:

  1) WikisController GET show returns http success
     Failure/Error: get :show

     ActionController::UrlGenerationError:
       No route matches {:action=>"show", :controller=>"wikis"}
     # ./spec/controllers/wikis_controller_spec.rb:16:in `block (3 levels) in <top (required)>'

  2) WikisController GET edit returns http success
     Failure/Error: get :edit

     ActionController::UrlGenerationError:
       No route matches {:action=>"edit", :controller=>"wikis"}
     # ./spec/controllers/wikis_controller_spec.rb:23:in `block (3 levels) in <top (required)>'
                    root GET    /                              wikis#index
                   wikis GET    /wikis(.:format)               wikis#index
                         POST   /wikis(.:format)               wikis#create
                new_wiki GET    /wikis/new(.:format)           wikis#new
               edit_wiki GET    /wikis/:id/edit(.:format)      wikis#edit
                    wiki GET    /wikis/:id(.:format)           wikis#show
                         PATCH  /wikis/:id(.:format)           wikis#update
                         PUT    /wikis/:id(.:format)           wikis#update
                         DELETE /wikis/:id(.:format)           wikis#destroy

所以,这些错误对我来说没有意义,因为很明显,我有这些控制器的路由。有人能告诉我这里发生了什么吗?

您的rspec包括
显示、编辑
操作,这些操作需要
id
作为您的
rake routes
结果

                    root GET    /                              wikis#index
                   wikis GET    /wikis(.:format)               wikis#index
                         POST   /wikis(.:format)               wikis#create
                new_wiki GET    /wikis/new(.:format)           wikis#new
               edit_wiki GET    /wikis/:id/edit(.:format)      wikis#edit
                    wiki GET    /wikis/:id(.:format)           wikis#show
                         PATCH  /wikis/:id(.:format)           wikis#update
                         PUT    /wikis/:id(.:format)           wikis#update
                         DELETE /wikis/:id(.:format)           wikis#destroy

请尝试
get:show,id:1

谢谢。对于rails和rspec来说还是个新鲜事物,答案似乎显而易见,因为您已经说过了
                    root GET    /                              wikis#index
                   wikis GET    /wikis(.:format)               wikis#index
                         POST   /wikis(.:format)               wikis#create
                new_wiki GET    /wikis/new(.:format)           wikis#new
               edit_wiki GET    /wikis/:id/edit(.:format)      wikis#edit
                    wiki GET    /wikis/:id(.:format)           wikis#show
                         PATCH  /wikis/:id(.:format)           wikis#update
                         PUT    /wikis/:id(.:format)           wikis#update
                         DELETE /wikis/:id(.:format)           wikis#destroy