我继承了特定的生成器并编辑了方法,因此创建了_form的规范。有解决方案:
# lib/generators/rspec_modded/scaffold/scaffold_generator.rb
require 'generators/rspec/scaffold/scaffold_generator.rb'
module RspecModded
module Generators
class ScaffoldGenerator < Rspec::Generators::ScaffoldGenerator
def generate_view_specs
super
copy_view :_form
end
end
end
end
如果我rails g
rspec_modded:scaffold在列表中并且如果手动调用(rails g rspec_modded:scaffold test
)则实际工作。
# config/application.rb
# ...
config.generators do |g|
g.test_framework :rspec_modded, :fixture => false, fixture_replacement: nil
g.fallbacks[:rspec_modded] = :rspec
end
据我所知,每个hook_for :test_framework
应该调用rspec_modded生成器,而rspec应该管理我没有的(例如模型)。但它不起作用:由于某种原因,unit_test生成器启动了!什么事?我真的不明白......
PS:我正在使用rails 3.2.6
答案 0 :(得分:0)
经过大量的挖掘和尝试后,我发现factory_girl_rails
宝石是这种奇怪行为的罪魁祸首!
问题出在文件lib/factory_girl_rails/railtie.rb
中,它有一个初始化程序,用于检查rspec是否为test_framework,如果不是,则强制执行to unit_test -_-
知道我看到他们修好了......
但是,为什么这个配置会覆盖用户定义的配置呢?我认为这个应该具有最高优先级......有人可以澄清一下吗?
经过另一次挖掘后,看起来将生成器的代码放在初始化程序中会覆盖用户,但如果这段代码在Railtie类定义的主体中,那么一切运行良好......