我正在使用 rspec-rails,但我想更改何时rails g controller Blahs
被调用,我希望创建 spec/requests/,而不是 spec/controllers/。
谢谢!
我正在使用 rspec-rails,但我想更改何时rails g controller Blahs
被调用,我希望创建 spec/requests/,而不是 spec/controllers/。
谢谢!
rails g integration_test foo
你很高兴去!
似乎没有通常的方法可以实现这一点,但是我找到了猴子修补解决方案:
# 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 测试。
有一个 RSpec 生成器来生成请求规范:
rails g rspec:request Foo
请注意,为了启用 RSpec 生成器,您需要将以下代码放入您的application.rb
:
class Application < Rails::Application
...
config.generators do |g|
g.test_framework :rspec
end
end
我认为您实际上无法配置它,但您始终可以分叉 rspec-rails 并根据自己的喜好对其进行调整https://github.com/rspec/rspec-rails/blob/master/lib/generators/rspec/controller/控制器生成器.rb
祝你好运!