Railsの情報サイトです。Girlを用いてテストデータを初期化するTweet2016/01/29Railsの自動テストでデータベースにテストデータを投入する方法は2つあります。前者がRails標準で、後者はGemパッケージとして提供されています。前者はYAMLで、後者はRubyでデータを記述します。私がRailsに出会った頃(2005年)にはFixturesしかありませんでした。その時は、こんな便利なものはないと感激しましたが、データベース構造やアプリケーションのロジックが複雑になるにつれYAMLファイルを保守するのに困難を感じるようになりました。Girlを知り、Fixturesを使うのをやめてしまいました。最近知ったのですが、一昨年(2014年)に私がRailsでMinitestとFixturesを使い続ける7つの理由と題する英語のブログ記事が書かれて、ちょっと話題になったそうです。RSpecの代わりにMinitestを使うのは悪くないアイデアですが、Fixturesを本物の開発案件で使うのはためらわれます。Girlのそれに遠く及びません。GirlのSequencesとかCallbacksとかの便利な機能を使いたいのです。データベースに保存する前にモデルのバリデーションも通したいのです。Girlに対しても不満があります。テストの実行が遅くなるということです。テストの各ケース(RSpec用語ではエグザンプル)ごとに必要なデータ構造をいちから作るのでどうしても遅くなります。同じデータ構造を前提とするテストケースが2個あれば、2回テストデータを投入することになります。他方、Fxturesではテストスイートの開始前に初期データベースを作り、これを全テストケースで繰り返し利用します。Girlの欠点を補う方法を紹介します。Girlで初期データベースを構築しておくというものです。以下、簡単に手順を説明します。動くはずですが、今回は説明を割愛します。