2011-09-17 1 views
6

私は開発データベースがダウンしている間に準備されたテストデータベースでテストを実行したいと思っています。現在、レールは開発データベースからテストデータベースを構築しようとしています。これは可能ですか?rakeでテストしているレール:私のdevデータベースに触れないでください

私のprod/devデータベースがホストから離れている状況ですが、単体テストのためにメモリデータベースにsqliteを使用しています。私の正確なアクションの

EDIT:注私はRailsの2.3

私のテスト・データベースを使用していますが、このような設定であるのconfig/database.ymlを:

test: 
    adapter: sqlite3 
    database: 'sqlite3_unittest_file.dat' 
    pool: 5 
    timeout: 5000 

私はrake db:test:load実行rails-rootディレクトリにtestデータベース(単なるファイル)が生成されます。 rake test:unitsを実行すると、すべてが機能します。今

私はrake test:unitsが瞬時に不満を失敗し、(「sdlkfj」のような)何か間違ったことに私のDEVデータベースユーザ名を設定するdatabase.ymlを編集する場合:

Access denied for user 'sdlkfj'@'myhostnsmae' (using password: YES) 

私は「本物のために」このビルドを実行しているとき私はビルドプロセス中にビルドが話をすることを許可されていないシステムで実行しています。したがって、devデータベースと話をして即座に突っ込む試みは私を殺してしまい、間違っているようです。

+0

通常、テストは実行中の開発データベースなしで動作するはずです。 http://guides.rubyonrails.org/testing.htmlセクション3.1を見て、あなたのステップに名前を付けるように質問を変更してください。開発データベースが最初から必要になっているようで、利用可能なデータベースはありません。 – mliebelt

+0

詳細情報を追加するように編集されました。 –

答えて

7

は、明示的な環境とrakeタスクを実行してみましょう:

rake test:units RAILS_ENV=test 

あなたは私の経験では、developmentが想定され、環境を指定しない場合。また、テストデータベースではまだフィクスチャデータが挿入されていますが、何らかの理由でdevelopment環境のものが参照されています。

+0

それはうまくいった!本当にありがとう。 –

4

これは、 'rake test:units'がテストデータベースが正しくセットアップされていることを確認するためです。これを実行するために、devデータベースから現在のスキーマをコピーする 'rake db:test:prepare'を呼び出します(テストを実行する前にすべての移行が実行されていることを確認します)。

これはいくつかのやり方で取り上げられます.1つはrakeタスク "db:test:prepare"をオーバーライドしていますが、これはpostのstackoverflowで提案されています。

関連する問題