0
请帮忙解决问题。我使用gem'devise',gem'rspec'和本教程: Authentication with Devise in Rspec tests .i需要在控制台中输出@user。 emails_controller_spec.rb:如何在控制台输出@user?
RSpec.describe EmailsController, type: :controller do
let(:valid_attributes) {
{
email: Faker::Internet.email,
description: Faker::Lorem.paragraph(7),
user_id: 1
}
}
describe "GET #index" do
login_user
it "assigns all emails as @emails" do
email = Email.create! valid_attributes
get :index
binding.pry
expect(assigns(:emails)).to eq([email])
#expect(assigns(@user)).to eq(@user)
end
end
end
规格/工厂/ users.rb的:
FactoryGirl.define do
factory :user do
sequence(:email){ |i| "us#{i}@ad.ad" }
password 'qwertyui'
password_confirmation{ |u| u.password }
role :none
end
end
规格/支持/ controller_macros.rb:
module ControllerMacros
def login_user
before(:each) do
@request.env["devise.mapping"] = Devise.mappings[:user]
user = FactoryGirl.create(:user)
sign_in user
end
end
end
我用户的宝石 '撬' 的看在运行测试后从控制台对变量进行操作。但我看到以下内容:
[email protected] ~/rails/mailer $ rspec spec/controllers
From: /home/kalinin/rails/mailer/spec/controllers/emails_controller_spec.rb @ line 56 :
[1] pry(#<RSpec::ExampleGroups::EmailsController::GETIndex>)> @user
=> nil
[2] pry(#<RSpec::ExampleGroups::EmailsController::GETIndex>)> user
NameError: undefined local variable or method `user' for #<RSpec::ExampleGroups::EmailsController::GETIndex:0x00000007c4e670>
from /home/kalinin/.rvm/gems/ruby-2.0.0-p598/gems/rspec-expectations-3.3.1/lib/rspec/matchers.rb:966:in `method_missing'
[3] pry(#<RSpec::ExampleGroups::EmailsController::GETIndex>)> puts page.html
=> nil
我需要显示用户对象或显示页面的html代码。请帮忙