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过滤器,并且本书明确地确定了问题并将其修复。我应该更仔细地更新这本书;我已经恢复了编辑,所以现在应该可以工作了。谢谢你修复了这个问题,谢谢你提供了一个很棒的资源:)非常感谢,这是一个很大的安慰非常感谢,这是一个很大的安慰