見習いエンジニア(仮)の学び場

未経験からエンジニア転職を目指す男が、プログラミング学習で学んだことを分かりやすくアウトプットするためのブログです。

テストコードで使われる「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は、テストコードを記述する際に必要な知識だと思うので、ぜひ押さえておきましょう。