NoMethodError:未定义的方法`sign_in'用于#<rspec :: examplegroups :: authorization :: whensignedin :: getindex:0x834c9d88>

时间:2016-09-19 23:29:50

标签: ruby-on-rails rspec devise

我尝试登录用户使用Devise在Rspec中测试它。 现在我有:

user = FactoryGirl.create(:user)
sign_in user

我收到错误

 NoMethodError:
   undefined method `sign_in' for #<RSpec::ExampleGroups::Authorization::WhenSignedIn::GETIndex:0x8374cc2c>
 # ./spec/features/authorization_spec.rb

我已经阅读了一些SO问题和一些关于测试的文档(如this

到目前为止,我尝试了各种各样的方法,但仍然无法管理它。 如果需要,我也可以在这里列出它们,但它们往往会出现新的错误和复杂情况。 那么我该怎样做才能让它全部工作?

长篇故事: 我尝试过的事情:

尝试这样的事情:

@user ||= FactoryGirl.create :user
post_via_redirect user_session_path, 'user[email]' => @user.email, 'user[password]' => @user.password

添加到devise和rails_helper这一行:

  config.include Devise::TestHelpers, type: :controller
  config.include Devise::TestHelpers, type: :view

以及其他方式。

1 个答案:

答案 0 :(得分:0)

最后是这样的:

@user ||= FactoryGirl.create :user
page.driver.post new_user_session_path, 'user[email]' => @user.email, 'user[password]' => 'password123'

感谢@Arun Kumar