我想创建一个类似于response
对象的自定义变量,该变量只能在controller specs
中使用。我注意到rspec支持挂钩之前/之后的filters,这意味着我可以创建实例变量,以便稍后使用。但是response
对象感觉和工作更像是一个懒惰评估的let
变量。此外,控制器规范支持可以接受参数的assign
方法。
rspec是否支持任何方法来创建与特定类型的规范一起使用的类似方法?
注意:我不需要支持低于rspec 3.0的任何内容。
答案 0 :(得分:2)
您可以通过使用您的函数创建一个模块然后将其包含在RSpec配置块中来完成此操作。当您包含模块时,您可以控制应该可用的规范类型作为第二个参数:
module ControllerSpecHelpers
def something
'fubar2000'
end
end
RSpec.configure do |config|
config.include ControllerSpecHelpers, type: :controller
end
RSpec.describe BlahController, type: :controller do
it 'should be possible to use the `something` helper in a controller spec' do
expect(something).to eq('fubar2000')
end
end