この質問が少し主観的なものである場合は、お詫び申し上げます... Cucumber&Rspecを使用してRails3エンジンをテストするための最良の方法を見つけようとしています。エンジンをテストするには、rails3アプリが必要です。これが私が現在行っていることです:
次のコマンドを実行して、Railsテストアプリをgem(myengine)のルートに追加します。
rails new /myengine/rails_app
/myengine/rails_app/features
通常のRailsアプリの場合と同じように、キュウリをに追加しますRails Engine Gem(を使用
:path=>"/myengine"
)を要求する/myengine/rails_app/Gemfile
gemのルートディレクトリに仕様を追加します。
/myengine/spec
にフィクスチャを含め、
/myengine/spec/fixtures
cucenv.rbに以下を追加します。
env.rb:
Fixtures.reset_cache
fixtures_folder = File.join(Rails.root, 'spec', 'fixtures')
fixtures = Dir[File.join(fixtures_folder, '*.yml')].map {|f| File.basename(f, '.yml') }
Fixtures.create_fixtures(fixtures_folder, fixtures)
このように設定することに問題がありますか?テストは正常に実行されますが、テストレールアプリ内に機能を配置することを少し躊躇しています。私はもともとgemのルートに機能を配置しようとし、その中にテストレールアプリを作成しましたfeatures/support
が、cucの実行時にアプリが他のすべてをロードしているのを確認できたとしても、何らかの理由でテストを実行したときにエンジンが初期化されませんでした。
Rails Enginesを使用していて、テストにcucとrspecを使用している人がいる場合は、セットアップについて聞いてみたいと思います。
* * UPDATE
この質問を書いたので、セットアップを少し変更しました。エンジンのルートの下にあるspecディレクトリを削除することにしました。ここで、「test_app」という名前のRailsアプリを作成し、Railsアプリで通常行うように、そのアプリ内にcucとrspecをセットアップします。次に、上記の手順3で行ったように宝石を含めます。エンジンはサブアプリなので、通常のレールアプリのようにテストするのが一番いいと思います。誰かが別の設定をしているのかどうか、私はまだ聞きたいです。