1

テスト環境で実行すべきタスクを実行すると、開発環境で実行されています。これには と が含まれrake test:(units/functionals/integration)ますrake db:test:prepare。副作用として、テストを実行するたびにデータベースが上書きされます。開発データベースの名前を変更しましたが、古いデータベース ( のデータベース) が見つからないという不平を言い続けていますdatabase.yml。環境はrequire 'rails'my の上部にあるdevelopment に設定されていapplication.rbます。ある種の単純な構成が欠けていますか?

編集: を追加してテストをRAILS_ENV=test実行すると、テスト環境で実行されます。ただし、保留中の移行 (すべて) があるため、実際には実行できません。実行rake db:test:prepare RAILS_ENV=testすると、同じ保留中の移行エラーが発生します。

更新: データベースが移行され、テストが進行中です。毎回テストを実行するRAILS_ENV=testのは正しい方法ではないように感じます

更新: def envrailties をデフォルトの「test」に変更すると、環境が test になることがわかりました。あれは

def env
  @_env ||= ActiveSupport::StringInquirer.new(ENV["RAILS_ENV"] || ENV["RACK_ENV"] || "development")
end
4

2 に答える 2

0

Change this line ENV ||= "test" to ENV = "test" in your spec_helper

If you are using Capybara and have rails server running in development mode then Capybara will use that instead of booting up a test instance.

A fix can be found here:

How to use the test database with Capybara?

于 2012-08-28T08:05:38.483 に答える
0

解決策はENV["RACK_ENV"]、私が試した他のオプションの代わりに使用することでした。なぜ他の問題がうまくいかなかったのかはまだわかりませんが、この問題は解決したと言えます。

とても簡単...

于 2012-09-04T22:19:13.417 に答える