如何使用rspec测试控制器时登录用户

时间:2016-04-19 09:12:48

标签: ruby ruby-on-rails-4 rspec rspec-rails

我有以下代码

@user = FactoryGirl.create(:admin)
post :create, company: attributes_for(:company)
expect Company.count.should == 1

我无法执行帖子,因为我已经在所有控制器上验证了用户方法,如何在该操作之前登录用户,我正在使用设计。

2 个答案:

答案 0 :(得分:1)

您可以将以下内容添加到spec / rails_helper.rb中:

require 'devise'

RSpec.configure do |config|
  config.include Devise::TestHelpers, :type => :controller
end

并在测试之前使用sign_in方法,例如sign_in @user

答案 1 :(得分:1)

你可以存根current_user。创建@user后,您可以这样做:

before(:each) do
  allow_any_instance_of(ApplicationController).
    to receive(:current_user).and_return(@user)
end

希望这有效吗?