我想添加一个包含帮助我以用户身份登录的方法的模块。那就是:将辅助模块添加到Rspec
module TestHelper
require 'spec_helper'
ALL_USERS = ["administrator", "instructor", "regular_user"]
def self.login_as(user_type)
user = User.find_by(global_role_id: GlobalRole.send(user_type))
@request.env["devise.mapping"] = Devise.mappings[:user]
sign_in user
end
end
是调用它是
require 'spec_helper'
RSpec.describe QuestionsController, :type => :controller do
include Devise::TestHelpers
include TestHelper
describe "a test" do
it "works!" do
TestHelper.login_as("administrator")
end
end
end
的规范,这里是spec_helper
RSpec.configure do |config|
config.include TestHelper, :type => :controller
我得到的错误是:undefined method 'env' for nil:NilClass
它看起来像我的模块没有按”无法访问@request
。
我的问题是:我如何在外部模块访问和@request
?
一些更多的探索,我发现需要块之前被包裹在一个代码之后。出于我不明白的原因,否则将无法正常工作。 – stoebelj
你可以发表一个现在的样子,以及它在将它添加到块之前的样子吗?无论从'before'块中访问什么,都应在'it'示例块中提供。 –