37

Rails 3.1エンジンの作成を開始しましたが、rspecを使用してテストするのに苦労しています。

まず、実行するrails g integration_test whateverと、spec /requestではなくtests/Integrationで定期的な統合テストが作成されます(rspec-rails gemがインストールされ、gemspecファイルの開発依存関係として必要になります)

また、スペックテストを実行すると、テストしているモデルに対応するテーブルが作成されていないというエラーが表示されます。ダミーアプリ内からrake engine_name:install:migrations実行しようとすると、「テーブルは既に存在します」というエラーが表示されます。rake db:migrate

すべてが切断されているように見えますが、rspec gemを通常のフルレールアプリケーションのようにシームレスに動作させるために、ここに何かが欠けているように感じます。

ここhttp://rubyx.com/2011/03/01/start-your-enginesからのすべての変更に従い、ここhttp:// railscastsに示すように、コンソールからダミーアプリを起動することで、エンジンを手動でテストできます。 com / Episodes/277-mountable-engines

Rails 3.1エンジンをテストするためにrspecをデフォルトにする方法はありますか?

4

2 に答える 2

62

Rails エンジンで RSpec を問題なく使用しています。

次のスイッチを使用してプラグインを作成しました: -T --full --dummy-path=spec/dummy.

  • -Tテスト/ユニットを除く
  • --fullプラグインがエンジンであることを示します
  • --dummy-pathこれは単純に、テスト ディレクトリを取得しないようにするためです (デフォルトは test/dummy です)。

そこから、「エンジンを起動する」記事の spec_helper を使用しました。

# Configure Rails Envinronment
ENV["RAILS_ENV"] = "test"
require File.expand_path("../dummy/config/environment.rb",  __FILE__)

require 'rspec/rails'

ENGINE_RAILS_ROOT=File.join(File.dirname(__FILE__), '../')

# Requires supporting ruby files with custom matchers and macros, etc,
# in spec/support/ and its subdirectories.
Dir[File.join(ENGINE_RAILS_ROOT, "spec/support/**/*.rb")].each {|f| require f }

RSpec.configure do |config|
  config.use_transactional_fixtures = true
end

発電機用。次のように config.generators ブロックを engine.rb ファイルに追加します。

module MyEngine
  class Engine < Rails::Engine
    config.generators do |g|
      g.test_framework :rspec, :view_specs => false
    end
  end
end

これで、モデル ジェネレーターのようなジェネレーターを実行するときに rspec テストを取得できます。

DB に関しては、database.yml ファイルは正しく設定されていますか? テスト環境をロードしましたrake db:test:clonerake db:migrate RAILS_ENV=test? 私の推測では、テスト用のデータベースがセットアップされていないため、RSpec はあなたのテーブルを見ることができません。

于 2011-09-19T14:09:39.447 に答える
9

私は同じ答えを探していましたが、より簡単な方法でエンジンを仕様化するための完全な環境をセットアップすることを約束する、燃焼宝石* を見つけました。追加するだけ

gem.add_development_dependency 'combustion', '~> 0.3.1'

あなたのgemspecに移動して実行します

bundle exec combust

spec ディレクトリに完全な Rails アプリを再現します。

※まだ試してません…

于 2012-03-14T00:09:19.313 に答える