環境
Rails5.2
はじめに
test環境にテスト用データを整備したい場合、FactoryBotがよく使われるようです。FactoryBotを使って、rails cからテストデータを作ってみました。
内容
test環境のDBにログインするには、次のようにします。オプションを指定せずに、rails cをすれば、デフォルトで、develop環境にログインします。
$rails c -e test
ググると、次のコマンドが紹介されている記事も見かけますが、旧バージョンのRailsでの使い方になります。Rails5.2の環境ではエラーになります。
$ rails c test --sandbox
Running via Spring preloader in process 5472
DEPRECATION WARNING: Passing the environment's name as a regular argument is deprecated and will be removed in the next Rails version.
Please, use the -e option instead. (called from <main> at /vagrant/raku_renkei/bin/rails:9)
Loading test environment in sandbox (Rails 5.2.8.1)
Any modifications you make will be rolled back on exit
エラーメッセージをGoogle翻訳してみると・・・
非推奨の警告: 環境の名前を通常の引数として渡すことは非推奨であり、Rails の次のバージョンでは削除される予定です。代わりに -e オプションを使用してください。 (/vagrant/raku_renkei/bin/rails:9 の から呼び出されます) サンドボックスにテスト環境をロードしています (Rails 5.2.8.1) 行った変更は終了時にロールバックされます
Userテーブルにデータを1件更新するためのFactoryBotのファイルです。名前空間を利用しているため、クラス名を明示的に指定しています。
FactoryBot.define do
factory :user, class: Master::User do
name {'テストユーザー'}
name_id {'testuser'}
password { 'password' }
password_confirmation { 'password' }
admin { 'true' }
end
end
コンソールでコマンドを流すと、Userテーブルにテストデータが1件更新されます。
>require 'factory_bot_rails'
>FactoryBot.create(:user)
確かに、テストデータが更新されたことを確認します。
>Master::User.find(1)
確認ができたら削除しておきます。
>Master::User.find(1).destroy