【发布时间】:2015-08-20 07:30:02
【问题描述】:
请帮忙显示 current_user。
我使用 rails4 + devise + rspec + capybara。我尝试登录用户。
测试:
it 'check display username on top panel' do
@request.env["devise.mapping"] = Devise.mappings[:user]
user = FactoryGirl.create(:user)
sign_in user
visit root_path
binding.pry
end
工厂:
FactoryGirl.define do
factory :user do
sequence(:name){ |i| "us#{i}" }
sequence(:email){ |i| "us#{i}@ad.ad" }
password 'qwerty'
password_confirmation{ |u| u.password }
end
end
rails_helper:
..........
..............
RSpec.configure do |config|
...........
..........
config.include Devise::TestHelpers, :type => :controller
end
但我无法显示当前用户。
控制台输出:
[1] pry(#<RSpec::ExampleGroups::AlbumsController>)> puts user.id
1
=> nil
[2] pry(#<RSpec::ExampleGroups::AlbumsController>)> puts user
#<User:0x000000086cee10>
=> nil
[3] pry(#<RSpec::ExampleGroups::AlbumsController>)> puts current_user
NameError: undefined local variable or method `current_user' for #<RSpec::ExampleGroups::AlbumsController:0x0000000863d348>
from /home/kalinin/.rvm/gems/ruby-2.0.0-p598/gems/rspec-expectations-3.3.0/lib/rspec/matchers.rb:966:in `method_missing'
[4] pry(#<RSpec::ExampleGroups::AlbumsController>)>
【问题讨论】:
-
为什么需要名字
current_user?你有一个user就在那里。 -
我需要检查是否有用户输入
-
如果你在控制器本身中使用
binding.pry
标签: ruby-on-rails rspec devise capybara