我正在使用rspec-rails,但我想在调用rails g controller Blahs
时更改,我想要创建spec / requests /,而不是spec / controllers /。
谢谢!
答案 0 :(得分:13)
rails g integration_test foo
你很高兴去吧!
答案 1 :(得分: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
以下是一些解释:测试框架的hook在ControllerGenerator中设置正确,因此我们需要加载类来覆盖该值。除了运行生成器之外,我不想在任何情况下加载此类。 config.generators
块也运行控制台和服务器,所以它不合适。还有self.generators
块,但它在config.generators
之前运行,并且不会配置生成器。所以我找到了适合我的Engine#load_generators
方法。
使用rails 5.0.1进行测试。
答案 2 :(得分:0)
我认为你实际上并不能配置这个,但是你总是可以根据自己的喜好调整rspec-rails并调整它https://github.com/rspec/rspec-rails/blob/master/lib/generators/rspec/controller/controller_generator.rb
祝你好运!答案 3 :(得分:0)
有一个RSpec生成器可以生成请求规范:
rails g rspec:request Foo
请注意,要启用RSpec生成器,您需要在application.rb
中放置以下代码:
class Application < Rails::Application
...
config.generators do |g|
g.test_framework :rspec
end
end