0

我继承了特定的生成器并编辑了该方法,以便创建 _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 grspec_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

4

1 回答 1

0

经过大量的挖掘和尝试,我发现factory_girl_rails宝石是这种奇怪行为的罪魁祸首!问题出在文件中lib/factory_girl_rails/railtie.rb,它有一个初始化程序来检查 rspec 是否是 test_framework,如果不是,则暴力破解到 unit_test -_-

并且知道我看到他们已经修复了它......

但是,为什么这个配置会覆盖用户定义的配置呢?我认为这个应该是最高优先级的......有人可以澄清一下吗?


经过另一次挖掘,似乎将生成器的代码放在初始化程序中会覆盖用户代码,但如果那段代码在 Railtie 类定义的主体中,一切正常......

于 2013-02-19T01:48:54.947 回答