Ruby on rails rspec失败,其中';当前用户';在控制器中编写的代码
我最近开始了rspec编码,我是rails框架的新手,当我在控制器中使用“current_user”时,rspec失败了。请在下面查看我的控制器和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)
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,第一个对我有效,第二个我尝试了,但代码无法帮助我,我在未定义的方法错误中得到了日志,我将再次检查它,谢谢