创建自定义rspec变量,如控制器规范的响应

时间:2014-09-05 17:44:27

标签: ruby-on-rails ruby testing rspec specs

我想创建一个类似于response对象的自定义变量,该变量只能在controller specs中使用。我注意到rspec支持挂钩之前/之后的filters,这意味着我可以创建实例变量,以便稍后使用。但是response对象感觉和工作更像是一个懒惰评估的let变量。此外,控制器规范支持可以接受参数的assign方法。 rspec是否支持任何方法来创建与特定类型的规范一起使用的类似方法?

注意:我不需要支持低于rspec 3.0的任何内容。

1 个答案:

答案 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