我有这个文件:
# 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
在我的
spec_helper
文件,我有这一行:Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
然而,当我运行 rspec 时,我收到如下错误:
undefined local variable or method `login_user' for RSpec::ExampleGroups::PostsController::POSTCreate::WhenSignedIn:Class
相关功能位于
support/auth_macros
,我认为它会被 require
我的 spec_helper
中的声明.知道会发生什么吗?
最佳答案
您需要该文件,但该方法包装在模块中。您需要删除包装模块或将其包含在您的组测试中。
更新:
100% 具体:require
加载文件并且什么都不做。需要文件后,模块已创建,但不包括在内。您需要将其包含在:include AuthMacros
关于ruby-on-rails - Rspec不加载支持文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24289941/