背景:ユニットボットやその他のテストで使用するオブジェクトを作成するために使用されるThoughtbotの「Factory Girl」gemに問題があります。コンソールにアクセスして、さまざまなFactory Girlコールを実行して、何が起こっているのかを確認したいと思います。たとえば、私はそこに行きたいです...
>> Factory(:user).inspect
さまざまな環境でコンソールを実行できることを知っています...
$ script/console Rails_ENV = test
しかし、それを行うと、Factoryクラスは使用できません。 test_helper.rb
がロードされていないようです。
test_helper.rb
への絶対パスを含む呼び出しを含むさまざまなrequire
呼び出しを試みましたが、これらは同様に失敗します。
$ script/console Rails_ENV=test
>> require '/Users/ethan/project/contactdb/test/test_helper.rb'
Errno::ENOENT: No such file or directory -
/Users/ethan/project/contactdb/config/environments/Rails_ENV=test.rb
Grr。ああ。
For Rails <3.
script/console --help
を実行します。構文がscript/console [environment]
であることに気付くでしょう。この場合、script/console test
です。
テストヘルパーが必要かどうか、またはテスト環境がそれを行う必要があるかどうかはわかりませんが、そのコマンドを使用すると、少なくともテスト環境で正常に起動できるはずです。
サイドノートとして:script /のさまざまなバイナリがRails環境を設定するさまざまな方法を持っているのは確かに奇妙なことです。
For Rails 3 and 4の場合
Rails c test
を実行します。現在のアプリ環境で必要な場合は、bundle exec
を追加します。
For Rails 5 and 6の場合
Rails console -e test
を実行します。
Rails 3で、単にRails console test
または Rails console production
または Rails console development
(これがデフォルトです)。
script/console test
必要なものはすべて揃っているはずです。
For Rails 5.2.0: "通常の引数として環境名を渡すことは推奨されておらず、次のRailsバージョンで削除されます。代わりにeオプション。」
Rails c -e test
コンソールコマンドが動作する環境を指定できます。
Rails c [environment]
例
1)ステージングの場合
Rails c staging
2)生産用
Rails c production
ソースと詳細な説明: The Rails Command Line
デビッド・スミスは正しいです
script/console test
Helpコマンドは、これが機能する理由を示します。
$ script/console -h
Usage: console [environment] [options]
-s, --sandbox Rollback database modifications on exit.
--irb=[irb] Invoke a different irb.
--debugger Enable Ruby-debugging for the console.
[environment]ビットです。
質問者の痛みを共有します。ここには、実際には3つの個別の質問があり、そのうちのいくつかは対処されていますが、いくつかは対処されていません
テスト環境でコンソールをどのように起動しますか?
最近のRailsバージョン、_bundle exec Rails c test
_、またはその代替構文。
Test/test_helper.rbがそのコンソールセッションにロードされることをどのように確認しますか?
_require './test/test_helper'
_のようなものがそれを行うべきです。
私にとっては、これはtrueを返します。これは、コンソールを起動したときにまだロードされていなかったことを示しています。そのステートメントがfalseを返す場合、キーストロークを数回浪費しているだけですが、それでも十分です。
Test_helperがロードされたら、その中で定義されたメソッドをどのように呼び出すのですか?
典型的なtest_helperでは、カスタムメソッドは通常ActiveSupport :: TestCaseのインスタンスメソッドとして定義されます。したがって、それらの1つを呼び出す場合は、そのクラスのインスタンスが必要です。試行錯誤により、ActiveSupport :: TestCase.newには必須パラメーターが1つあるため、...それを渡します。
Test_helperにcreate_userというメソッドがある場合、次の方法で呼び出すことができます:ActiveSupport::TestCase.new("no idea what this is for").create_user
GEMをインストールし、environment.rbまたはtest.rbファイルに次の行を追加したことを確認してください。
config.gem "thoughtbot-factory_girl", :lib => "factory_girl", :source => "http://gems.github.com"
テスト環境
Rails console test # or just Rails c test
開発環境
Rails console # or just Rails c
実行するコマンドRailsコンソールテスト環境は
Rails c -e test
または
Rails_ENV=test Rails c
あなたが何かのような問題に直面している場合
ActiveRecord::StatementInvalid:
Mysql2::Error: Table 'DB_test.users' doesn't exist: SHOW FULL FIELDS FROM `users`
次に、実行してテストDBを準備する必要があります
bundle exec rake db:test:prepare