我在使用Rspec测试我的新用户个人资料页面时遇到问题。它正在通过浏览器工作,但Rspec正在爆炸。
我正在使用带有单独控制器的设计来编辑配置文件字段。
这是一个请求规范。
it 'Shows the user profile with their non-private data' do
visit user_path(@user)
page.should have_content @user.full_name
end
因此错误而失败:
Failure/Error: visit user_path(@user)
ActionController::RoutingError:
No route matches {:action=>"show", :controller=>"users"}
我不同意
#routes.rb
devise_for :users, :controllers => {:registrations => "registrations"}
resources :users, :only => [:edit, :update, :show]
更新和编辑路径助手工作得很好。
控制器操作:
class UsersController < ApplicationController
layout 'profile', :except => [:show]
#... edit and update omitted
def show
@user = User.find(params[:id])
end
end
rake路线显示:
new_user_session GET /users/sign_in(.:format) devise/sessions#new
user_session POST /users/sign_in(.:format) devise/sessions#create
destroy_user_session DELETE /users/sign_out(.:format) devise/sessions#destroy
user_password POST /users/password(.:format) devise/passwords#create
new_user_password GET /users/password/new(.:format) devise/passwords#new
edit_user_password GET /users/password/edit(.:format) devise/passwords#edit
PUT /users/password(.:format) devise/passwords#update
cancel_user_registration GET /users/cancel(.:format) registrations#cancel
user_registration POST /users(.:format) registrations#create
new_user_registration GET /users/sign_up(.:format) registrations#new
edit_user_registration GET /users/edit(.:format) registrations#edit
PUT /users(.:format) registrations#update
DELETE /users(.:format) registrations#destroy
edit_user GET /users/:id/edit(.:format) users#edit
user GET /users/:id(.:format) users#show
PUT /users/:id(.:format) users#update
所以看起来设计并没有干扰我的路线,更重要的是,一切都在浏览器中运行。我在这里缺少什么?
我还尝试制作一个名为profile的成员操作,而不是默认show,它具有相同的结果
答案 0 :(得分:0)
此处的问题是我启动了一个新的context
数据块,并且未在@user
数据块之前设置it
。路线的东西只是一个红色的鲱鱼。
同时证明如果你无法解决问题,你应该暂时离开你的代码。