Ruby on rails Rails教程第9.1.1章未识别的登录

Ruby on rails Rails教程第9.1.1章未识别的登录,ruby-on-rails,ruby,rspec,railstutorial.org,Ruby On Rails,Ruby,Rspec,Railstutorial.org,我正在学习迈克尔·哈特尔的教程 我刚刚将这些测试介绍给user\u pages\u 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"

我正在学习迈克尔·哈特尔的教程

我刚刚将这些测试介绍给
user\u pages\u 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\u 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 #<RSpec::Core::ExampleGroup::Nested_1::Nested_4::Nested_1:0x007fcd57928138>
   # ./spec/requests/user_pages_spec.rb:90:in `block (3 levels) in <top (required)>'
1)用户页面编辑页面
失败/错误:登录用户
命名错误:
未定义的方法“sign_in”#
#./spec/requests/user\u pages\u spec.rb:90:in'block(3级)in'
我应该如何获取用户页面规格,以便从sessions\u helper获取登录功能?用户和控制器可以使用它;只是我做错了测试文件


我尝试显式地包含SessionHelper,但没有任何帮助。

引入的
登录用户
调用与RSpec直到清单9.6才引入此方法的事实不一致。原来的版本是正确的,对
sign\u-in-user
的调用后来被删除。

引入
sign\u-in-user
调用与RSpec直到清单9.6才引入此方法这一事实不一致。原来的版本是正确的,对用户登录的调用从此被删除。

事实上,这本书与最初写的一样正确。测试将一直通过,直到添加了before过滤器,并且本书明确地确定了问题并将其修复。我应该更仔细地更新这本书;我已经恢复了编辑,所以现在应该可以了。谢谢你修复了这个问题,也谢谢你提供了一个很棒的资源:)事实上,这本书和最初写的一样正确。测试将一直通过,直到添加了before过滤器,并且本书明确地确定了问题并将其修复。我应该更仔细地更新这本书;我已经恢复了编辑,所以现在应该可以工作了。谢谢你修复了这个问题,谢谢你提供了一个很棒的资源:)非常感谢,这是一个很大的安慰非常感谢,这是一个很大的安慰