Rspec没有加载支持文件

nul*_*ull 10 rspec ruby-on-rails

我有这个文件:

# support/auth_macros.rb
module AuthMacros
  def login_user
    before(:each) do
      @request.env["devise.mapping"] = Devise.mappings[:user]
      @logged_in_user = FactoryGirl.create(:user, username: "logged_in")
      sign_in @logged_in_user
    end
  end

  def logout_user
    before(:each) do
      sign_out @logged_in_user
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

在我的spec_helper文件中,我有这一行:

Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
Run Code Online (Sandbox Code Playgroud)

然而,当我运行rspec时,我得到的错误如下:

undefined local variable or method `login_user' for RSpec::ExampleGroups::PostsController::POSTCreate::WhenSignedIn:Class
Run Code Online (Sandbox Code Playgroud)

相关的功能位于support/auth_macros,我认为这将由require我的声明中提取spec_helper.

知道可能会发生什么吗?

Bro*_*tse 9

您需要该文件,但该方法包含在模块中.您需要删除包装模块或将其包含在组测试中.

更新:

要100%特定:require加载文件,不做任何其他事情.在需要文件后,模块已创建,但不包括在内.你需要包含它:include AuthMacros

  • 特别是,升级到Rspec 3.0导致了这个问题.它不再从路径中推断出spec类型,尽管你可以在`spec_helper`中使用:`config.infer_spec_type_from_file_location来覆盖这种行为! (2认同)