テストコードで使われる「FactoryBot」って何?
FactoryBotとは、インスタンスをまとめておくことができるgem(プログラムの集合体)のことです。
主にテストコードにおいて、テスト用のユーザー情報などを作成したいときに使用されます。
例えば、正常系のテストで「ユーザーが新規登録できるか」をテストするとします。
このテストを実行するために、架空のユーザーを作る必要があることは何となくわかると思います。
ただ、この時の問題点が「テストコードの記述が長くなってしまうこと」です。
「ユーザーの名前は〜〜さんで、登録に必要なemailは〜〜で、パスワードは〜〜」と毎回記述をするのは時間もかかりますし、コードも読みづらくなってしまいます。
そこで活躍するものがFactoryBotです。
FactoryBotは、ユーザー情報の雛形を1つのファイルに記述しておけば、別のファイルにあるテストコード内でも簡単にユーザー情報を生成することができます。
つまり、コードが長くなったり複雑になってしまうことを防いでくれるのです。
この時生成されたユーザー情報のことを、インスタンスと呼びます。
ただし、生成されたインスタンスは、そのままでは使用することができません。
FactoryBotから生成されたインスタンスは、FactoryBot.build(インスタンス名)とテストコード内で記述することで、はじめて使用することができます。
ここまでの流れを例えるなら、FactoryBotはニワトリです。
FactoryBotニワトリは、インスタンスという卵をポンポンと生み出してくれます。
そしてそのインスタンスは、FactoryBot.build(インスタンス名)と記述をすることで孵化し、各テストコードで使用することができるイメージになります。
ここまでで、FactoryBotのメリットや役割について解説しました。
ちなみに、FactoryBotはfaker(フェイカー)というgemとセットで使用されることが多いです。
fakerには、FactoryBotで生成するインスタンスにランダムな値をつける役割があります。
先ほどのユーザー情報であれば、名前やメールアドレスなどのスペースを用意するのがFactoryBotで、用意されたスペースの中に「名前=太郎さん」「メールアドレス=〇〇@gmail.com」といった具体的な情報をランダムに用意してれるのがfakerになります。
今日紹介したFactoryBotやFakerは、テストコードを記述する際に必要な知識だと思うので、ぜひ押さえておきましょう。