はじめに
テスト環境で統合テストやら単体テストやら試すときに初期データがないと不便な場合ってありますよね。私はあります。まあ、私、テストはおろそかにしまいがちなので準備不足なだけですが...
そんなときのために、いかに効率良く初期データを入れていくかについて考えてみました。
ベストな方法
みんな思いついてるとは思いますが、開発環境があるのでそれを活用しようと考えた。具体的には、db:resetしてから実際に開発環境を動かしてそれなりのデータをpostしてからdb:seed:dumpしちゃう方法。
これがベストだと思ってます。予期せぬpostに対応できるのかよーって感じですが、初期データはあくまで呼び出してからのテストになるので、postのテストはまた別途書く必要が出てくるので初期データとしては条件を満たしているのかと考えています。
スクレイピングやら、csvやらのファイルを一度データベースに突っ込んでしまって、そこからdumpしといた方がdb/seed.rbには優しいので、そんな感じで私は開発しています。不変なデータはまとまった段階でdumpして残しておくってのが大事かなと。
具体的な手順
1.開発環境のデータベースをリセットする
db:reset
2.開発環境を動かして、必要な初期データを蓄積させる
3.データをdump
db:seed:dump
こんな手順で、db/seed.rbファイルに初期データを集めています。
開発環境のデータをリセットしないがちなので、定期的にテストコードつくろうってなったときにデータベースのリセットにつながるので効率が良いと思って取り組んでます。