Rails教程第9.1.1章sign_in无法识别
我正在研究Michael Hartl的教程。
我刚刚将这些测试介绍给user_pages_spec.rb
describe "edit" do let(:user) { FactoryGirl.create(:user) } before do sign_in user visit edit_user_path(user) end describe "page" do it { should have_content("Update your profile") } it { should have_title("Edit user") } it { should have_link('change', href: 'http://gravatar.com/emails') } end describe "with invalid information" do before { click_button "Save changes" } it { should have_content('error') } end end
我的sessions_helper.rb
文件是:
module SessionsHelper def sign_in(user) remember_token = User.new_remember_token cookies.permanent[:remember_token] = remember_token user.update_attribute(:remember_token, User.encrypt(remember_token)) self.current_user= user end def current_user=(user) @current_user=user end def current_user remember_token = User.encrypt(cookies[:remember_token]) @current_user ||= User.find_by(remember_token: remember_token) end def signed_in? !current_user.nil? end def sign_out self.current_user = nil cookies.delete(:remember_token) end end
当我运行测试时,所有4个都失败并出现以下错误消息:
1) User pages edit page Failure/Error: sign_in user NoMethodError: undefined method `sign_in' for # # ./spec/requests/user_pages_spec.rb:90:in `block (3 levels) in '
我应该如何获取用户页面规范来从sessions_helper中获取sign_in函数? users_controller可以使用它; 它只是我做错了的测试文件。
我尝试明确地包含SessionsHelper并且它没有帮助。
清单9.1中的sign_in user
调用的引入是最近的一个更改 ,它与RSpec在列表9.6之前不引入此方法的事实不一致。 事实certificate原始版本是正确的,并且已经删除了对sign_in user
调用。
- 使用shoulda重构Rails模型上的rspec测试
- Ruby on Rails Michael Hartl第8.5章测试失败
- 在轨道上的ruby中自动测试出错
- 无法启动WEBrick,Rails gem的文件夹为空
- Rails教程sample_app在Heroku中失败,带有log:ActionController :: RoutingError(没有路由匹配“/ about”):
- 未初始化的常量ApplicationRecord
- 如何使用RSpecs valid_session?
- RailsTutorial.org – 用户中的ExecJS :: RuntimeError #index
- 在Hartl的rails教程的步骤5.1.2中,bootstrap-sass gem破坏了我的轨道3.2.3