ruby-on-rails - 创建自定义 rspec 变量,如 Controller 规范的响应

标签 ruby-on-rails ruby testing rspec specs

我想创建一个类似于 response 对象的自定义变量,它应该只在 controller specs 中可用。我注意到 rspec 支持 filters这是钩子(Hook)之前/之后,这意味着我可以用它们创建实例变量以供以后使用。但是 response 对象感觉和工作起来更像是一个延迟计算的 let 变量。此外, Controller 规范支持可以接受参数的 assign 方法。 rspec 是否支持任何方式来创建与特定类型的规范一起使用的类似方法?

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

最佳答案

您可以通过使用您的函数创建一个模块然后将其包含在您的 RSpec 配置 block 中来简单地做到这一点。您可以控制规范的类型,当您包含模块时,它应该作为第二个参数可用:

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

关于ruby-on-rails - 创建自定义 rspec 变量,如 Controller 规范的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25691280/

相关文章:

ruby-on-rails - 在模型保存时获取 ActiveRecord::AssociationTypeMismatch

ruby-on-rails - 将参数传递给 '.js.erb' 模板

c - 为什么此代码不适用于 ruby​​ 1.9 但适用于 ruby​​ 1.8?

ruby - 错误 : undefined method `[]' for nil:NilClass

angularjs - Protractor :异步超时,我认为是因为它找不到元素

javascript - import 在测试时返回 undefined 而不是 react 组件

ruby-on-rails - 已完成 401 未授权请求被重定向到该请求对于需要预检的跨域请求是不允许的

ruby-on-rails - Zurb Foundation 单选按钮和复选框在 Rails 中不起作用

ruby - 在不转换的情况下将正则表达式与 Ruby 中的非字符串匹配

c# - Entity Framework 4.3 和 Moq 无法创建 DbContext 模拟