8

我正在使用 rspec-rails,但我想更改何时rails g controller Blahs被调用,我希望创建 spec/requests/,而不是 spec/controllers/。

谢谢!

4

4 回答 4

16
rails g integration_test foo

你很高兴去!

于 2012-05-25T21:54:25.360 回答
5

似乎没有通常的方法可以实现这一点,但是我找到了猴子修补解决方案:

# config/initializers/generators.rb
Rails.application.configure do
  config.generators do |g|
    # your setup here, like g.javascripts = false
  end

  def self.load_generators(*)
    super
    require 'rails/generators/rails/controller/controller_generator'
    Rails::Generators::ControllerGenerator.class_eval do
      remove_hook_for :test_framework
      hook_for :test_framework, as: :request
    end
  end
end

这里有一些解释:测试框架的钩子是在 ControllerGenerator 中设置的,所以我们需要加载类来覆盖这个值。除了运行生成器之外,我不想在任何情况下加载这个类。config.generators块也适用于控制台和服务器,因此不合适。还有self.generators块,但它在之前运行config.generators并且不会配置生成器。所以我找到Engine#load_generators了适合我的方法。

使用 rails 5.0.1 测试。

于 2017-04-16T17:08:31.693 回答
1

有一个 RSpec 生成器来生成请求规范:

rails g rspec:request Foo

请注意,为了启用 RSpec 生成器,您需要将以下代码放入您的application.rb:

class Application < Rails::Application
  ...
  config.generators do |g|
    g.test_framework :rspec
  end
end
于 2020-04-23T06:44:29.477 回答
-1

我认为您实际上无法配置它,但您始终可以分叉 rspec-rails 并根据自己的喜好对其进行调整https://github.com/rspec/rspec-rails/blob/master/lib/generators/rspec/controller/控制器生成器.rb

祝你好运!

于 2012-05-25T20:09:14.613 回答