【问题标题】:how display current user in debug mode?如何在调试模式下显示当前用户?
【发布时间】: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


【解决方案1】:

如果您需要检查登录用户,请尝试在sign_in user 之后调用user_signed_in? 助手

对不起我的英语不好

【讨论】:

    【解决方案2】:

    您可以使用subject.current_user 访问当前登录的用户。

    【讨论】:

      猜你喜欢
      • 2012-07-05
      • 1970-01-01
      • 2020-05-02
      • 2016-05-26
      • 1970-01-01
      • 1970-01-01
      • 2018-05-19
      • 2015-10-19
      • 1970-01-01
      相关资源
      最近更新 更多