0

rspec-rails ジェネレーターにモンキー パッチを適用して、_form.html_spec.rb テンプレートを生成したいと考えています。その方法は知っていますが、このパッチをどこに置くべきかわかりません!

私がやったこと:

# rspec_generator_patch.rb
module Rspec
  module Generators
    class ScaffoldGenerator < Base
      def generate_views_specs_with_form *args, &block
        generate_views_specs_without_form
        copy_view :_form
      end
      alias_method_chain :generate_views_specs, :form
    end
  end
end

このファイルをどこに置くのですか?ありがとうございました。

編集:

わかりました、問題はほぼ解決したと思います。モンキー パッチの代わりに、特定のジェネレーターを継承し、メソッドを編集しました。解決策があります:

# 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

rspec_modded:scaffoldを実行するrails gと、リストにあり、手動で呼び出すと実際に機能します ( 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 ジェネレーターが作動します! どうした?私は本当に理解していません...

4

1 に答える 1

0

モンキー パッチは、ロードされる限り、どこにでも置くことができます。Rails の場合、通常は /lib フォルダーに配置します。

于 2013-02-17T22:27:26.710 に答える