ほげほげパッチ

有る事無い事 徒然なるままに

単体テストコード

今日の工夫

カリキュラムは、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)、答えや主張を明白にする -> を主張する、を議論する

まとめ

テストの流れは、

  1. インスタンス設定

  2. valid?で保存できるか確認

  3. expect().to matcher

とにかく条件に合致する配列データ(インスタンス)をゴリゴリ作っていく感じ。

可能性を全部試すと言うより、条件を満たすサンプルを1個書ければそれでいい。