コントローラーのテストが大きくなりすぎていることに気付いたので、いくつかのスタブ メソッドを別のモジュールに移動しました。
私はそれをtest/lib/my_module.rbに入れました
module MyModule
def mymethod
end
end
したがって、test/controllers/my_controller.rb のコントローラー テストは次のようになります。
class MyControllerTest < ActionController::TestCase
include MyModule
def test_something
end
end
次に、テスト中にのみレール自動ロードパス「test/lib」を作成しようとしました。このために、config/environments/test.rb に次の行を追加しました。
config.autoload_paths += ["#{config.root}/test/lib"]
config.eager_load_paths += ["#{config.root}/test/lib"]
しかし、「RAILS_ENV=test bundle exec rake test」でテストを実行すると、次のようにスローされます。
rake aborted!
NameError: uninitialized constant MyControllerTest::MyModule
config/application.rb に同じ 2 行を入れると、すべてうまくいきます。しかし、私はこのモジュールf.exをロードしたくありません。生産中。
なぜそれが起こるのですか?どうすれば修正できますか?また、テスト固有のコードを維持するためのRailsのベストプラクティスは何ですか?