はじめに
プログラミングを勉強して2か月半ほどです。
プログラミングスクールを卒業し、現在就職活動をしています。
就職活動と学習を進める難しさを日々感じていますが、エンジニアとして成長していくためにもコツコツと頑張っています。
その学習の中でもアウトプットの重要性を再確認したので、Qiitaへの投稿で学習した内容を言語化できるように取り組んでいます。
今回は、今までの投稿とは変わって、テストコードの考察をしていきたいと思います。
※考察というよりは、自分の頭の中の整理といった感じです。
この投稿を書きながら整理していくような感覚で書いています笑
なので、いつもの投稿のように技術的にためになる内容ではありませんが、お付き合いください。
そして、みなさんの意見も聞けると嬉しいです。
それでは、本題に入ります!
注意
今回は考察なので詳細な説明は省略しています。
Let's start!!!
テストコード
「テストコード」とは、簡単に説明すると、作成したアプリケーションが想定した挙動になっているのかを自動で確認するためのものです。
確認する際には、正常系と異常系の2種類の方法で確認します。(他にもあります)
※正常系:ユーザーが開発者の想定通りの操作をした時のアプリの挙動を確認
※異常系:ユーザーが開発者の想定外の操作をした時のアプリの挙動を確認
FactorybotとFaker
テストコードを効率的に記述するために使用するのがFactorybot
です。
※こんな感じでユーザーが入力する内容を記述します。
FactoryBot.define do
factory :user do
nickname {'qiita'}
email {'qiita@example'}
password {'000000'}
password_confirmation {password}
end
end
そして、Factorybotで生成する内容をランダムにするために使用するのがFaker
です。
※先ほどの内容をFakerで記述した例です。
FactoryBot.define do
factory :user do
nickname {Faker::Name.initials(number: 2)}
email {Faker::Internet.email}
password {Faker::Internet.password(min_length: 6)}
password_confirmation {password}
end
end
考察
ここまで、テストコードとFakerについて簡単に説明をしました。
ここからは、本題のテストコードについての考察をしていきます。
私は、スクールでFakerを学習した時にテストコードはFakerで記述するものだと思っていました。
その理由は、Fakerを使うことで実際にユーザーが入力するようなランダムな値や文字を生成してくれるからです。
Fakerを使用せずにテストコードを記述すると1つの値や文字でしかテストができないので本当のテストとは言えないと考えました。
しかし、テストコードはFakerを使用せずともできるということが事実です。
そこで、私はどういった時にFakerが必要なのかを考えてみました。
その中で、初めに思いついたのが一意性制約のあるものです。
※一意性制約とは、設定したカラムに同じ値を設定できなくする制約のことです。
一意性制約のバリデーションをかける代表例として、メールアドレスがあります。
このような一意性制約のあるものに対してFakerを使うことで、一意性制約のバリデーションに引っかからずに済みます。
つまり、一意性制約をかけているものに対してはマストでFakerを使用する必要がありそうです。
終わりに
Fakerの使い方についてあまり理解できずにスクールを卒業しましたが、今回この投稿を書いていく中で何となくわかった気がします。
私は、スクールのカリキュラムのテストコードを一生懸命Fakerを使って書いていました笑
これから、学習を進めていく中でもっと理解を深められたらいいなと思います。
今回は、初めてこのような形の投稿をしてみましたが、頭の中が整理できたのでとても良かったです。
こらからも、Qiitaを活用して学習した内容の整理やアウトプットをしていきたいと思います!
最後まで読んでいただきありがとうございました!!!