Ruby on rails RubyonRails:测试http状态是否成功时出现Rspec路由错误
因此,在ruby on rails应用程序中,我很难通过这些规范: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
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