Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rspec失败,其中';当前用户';在控制器中编写的代码_Ruby On Rails_Rspec Rails - Fatal编程技术网

Ruby on rails rspec失败,其中';当前用户';在控制器中编写的代码

Ruby on rails rspec失败,其中';当前用户';在控制器中编写的代码,ruby-on-rails,rspec-rails,Ruby On Rails,Rspec Rails,我最近开始了rspec编码,我是rails框架的新手,当我在控制器中使用“current_user”时,rspec失败了。请在下面查看我的控制器和rspec代码。提前谢谢 控制器代码: def task @tasks = current_user.alerts.where(kind: "TASK") end rspec代码: describe "get #task" do it "assigns a task" do sign_in(@user)

我最近开始了rspec编码,我是rails框架的新手,当我在控制器中使用“current_user”时,rspec失败了。请在下面查看我的控制器和rspec代码。提前谢谢

控制器代码:

def task
  @tasks = current_user.alerts.where(kind: "TASK")
end
rspec代码:

describe "get #task" do
  it "assigns a task" do            
    sign_in(@user)
    get :task       
    expect(response).to have_http_status(200)       
  end

您可以这样做:

@request.env["devise.mapping"] = Devise.mappings[:user]
 user = FactoryGirl.create(:user) # Don't forget to create a factory for user
 user.confirm! # or set a confirmed_at inside the factory. Only necessary if you are using the "confirmable" module
 sign_in user
最好将其置于support/designe.rb中:

module ControllerMacros
  def login_user
    before(:each) do
      @request.env["devise.mapping"] = Devise.mappings[:user]
      user = FactoryGirl.create(:user)
      user.confirm! # or set a confirmed_at inside the factory. Only necessary if you are using the "confirmable" module
      sign_in user
    end
  end
end

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

您可以说login\u user而不是sign\u in(@user)

您是在某处定义sign\u in方法,还是将其用于designe,如果登录是一种方法,您能展示一下吗?为设计使用登录。(使用Desive gem文件)我将发布答案非常感谢Hany Elsioufy,第一个对我有效,第二个我尝试了,但代码无法帮助我,我在未定义的方法错误中得到了日志,我将再次检查它,谢谢