ruby-on-rails-3 - Rails3 + Rspec2 : undefined method `authenticate!' for nil:NilClass

标签 ruby-on-rails-3 testing rspec

当我添加 before_filter authenticate_user 时,我所有的测试都失败了!给我的 Controller 。我该如何解决这个问题?

谢谢

最佳答案

您必须在测试中登录用户。我不知道您使用的身份验证方法,但我会大胆猜测。如果它是设计的,创建一个 spec/support/controller_macros.rb 并插入:

module ControllerMacros
  def login_user
    before(:each) do
      @request.env["devise.mapping"] = :user
      @user = Factory.create(:user)
      sign_in @user
    end
  end
end

我用factory girl来创建一个工厂,但是你可以随心所欲地做。然后,在您的测试中添加它:

describe AlliancesController do
    login_user

  describe "GET 'show' without an id" do
......

关于ruby-on-rails-3 - Rails3 + Rspec2 : undefined method `authenticate!' for nil:NilClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5600487/

相关文章:

ruby-on-rails - 使用音译的 Rails 参数化不适用于阿拉伯语/Unicode 字符串

facebook - 无法覆盖 Devise 中的 after_omniauth_failure_path_for

javascript - 使用 nightwatch.js 我如何选择具有动态提供的值的动态生成的项目

ruby-on-rails - RSpec Controller 规范在更新时失败,参数无效

sql - 如何在Rails中联接三个表?

ruby-on-rails-3 - Rails 3.2 session id nil 直到下一个请求

iis - TFS:分支。如何将分支映射到 IIS 以进行本地测试

testing - 用于使用 phpunit 进行测试的临时 Doctrine2 装置

qt - 带有 QT 警告的 rspec 和 capybara 关于使用 4.8.2 但安装了 qt5

ruby-on-rails - 如何使用不同的参数多次运行 rspec 类