単体テストコード
今日の工夫
カリキュラムは、INDEXのタイトル部分だけを先に読んでから、上から順に中身を読む。
全体像を把握した上で、個別の内容をinputする。
徒然草
世の中にはいろんな働き方があって、いろんな技術があって、いろんな言語があり、勉強しなければいけないことが山のようにある。
将来のこととか考えて悶々としてたが、ひとまずは今を楽しむことにする。
わかりやすい目標があって、サポートしてくれる人がいて、同じ課題に取り組む人がいる。
せっかく貴重な環境に身を置けているので、その時々を一生懸命に過ごさないと勿体無い。
メソッド・単語
Gem FactoyBot
(工場生産的な?)
ビルド(build)メソッド
FactoryBot
から新しいインスタンスを生成。
ActiveRecordで言うところのnew
#FactoryBot内で :user インスタンスを設定した上で FactoryBot.build(:user) #newと同じ意味 User.new(nickname: 'hoge', ...)
beforeメソッド
ActiveRecordで言うところのbefore_action
変数はインスタンス変数で。
before do @user = FactoryBot.build(:user) end
Gem 'Faker'
fake: 偽造する。ふりをする。偽物。
ランダムな値を生成してくれるGem。
文字数指定とか、大文字指定とかもできるっぽい。
大文字始まり(キャメルケース?)
Faker::Name.initials(number: 2) => "GR" Faker::Internet.email => "vida@oconnell.test" Faker::Internet.password(min_length: 6, max_length: 20) => "3OVpQDpPFe"
exampleの洗い出し
バリデーションとメソッドが対象
deviseによるバリデーション = validatable
- 以下が初期設定
- email {存在, 一意, @がある}
- password {存在, 6文字以上128文字以下}
正常系のテスト
be_valid
= 「valid?
->true
」を期待するmatcher
英単語
argument
明らかにする(arguo)こと(-mentum)、答えや主張を明らかにすること
-> 議論、議論の根拠、論証 引数
- argue: 明白にする(arguo)、答えや主張を明白にする -> を主張する、を議論する
まとめ
テストの流れは、
インスタンス設定
valid?
で保存できるか確認expect().to matcher
とにかく条件に合致する配列データ(インスタンス)をゴリゴリ作っていく感じ。
可能性を全部試すと言うより、条件を満たすサンプルを1個書ければそれでいい。