【連載 RSpec入門講座】第9回前編 「validationのテストの前に、自作のvalidationを書いてみよう( ・∀・)つ旦~」


こんにちは。kanotanです。

自社サービスの実装も佳境に入ってきて、忙しい毎日です。

それと、艦これのE-5が突破できなくて泣きそうです(´;ω;`)
武蔵欲しい・・・。

それはさておき、今回の講座を始めましょう。

前回「modelのテストを書いてみよう 壁|ω・)チラッ」は → こちら
————————————————————

(´・ω・`) 「前回はmodelのテストについて書いたね」

( ´∀`) 「そうだね」

(´・ω・`) 「関連が正しいか、必須か、一意かだけの簡単なテストだったね」

( ´∀`) 「まあそう言わずに。すごく大事なテストなんだから」

(´・ω・`) 「でもちょっと物足りないなぁ・・・」

( ´∀`) 「じゃあ今回は、自分で作ったvalidationについてのテストを書いてみようか」

(´・ω・`) 「お、楽しみ」

( ´∀`) 「でも、全部書くと長くなっちゃうから、今回はvalidationをどう書いてあるかの紹介に留めるよ」

(´・ω・`) 「はーい」

app/validators/email_validators

app/validators/phone_number_validators

( ´∀`) 「よく使うであろう、Emailと電話番号のvalidatorを書いてみたよ」

(´・ω・`) 「ほえー、こんな風に書くんだね。」

( ´∀`) 「app/validators配下に作ってあげると、色んなmodelから使い回しができるからね」

(´・ω・`) 「なるほど、じゃあ次はmodel側からの呼び出しの書き方だね」

( ´∀`) 「email・phoneの呼び出し方についてはこんな感じ」

(´・ω・`) 「ほえ、たったの1行で呼び出し完了できちゃうんだね。」

( ´∀`) 「【hoge_validators】をapp/validatorsに書いたら【hoge: true】で呼び出し完了」

(´・ω・`) 「なんだ、楽勝じゃんー!」

( ´∀`) 「この時に注意しなきゃいけないのは、『allow_blank: true』についてだね」

(´・ω・`) 「どゆこと?」

( ´∀`) 「たとえば、電話番号のvalidatorを見てみよう」

( ´∀`) 「正規表現で『0+数字1~4桁+ハイフン+数字1~4桁+ハイフン+数字1~4桁』ってvalidationが組んであるね」

(´・ω・`) 「ふむふむ」

( ´∀`) 「そうすると、それ以外の値は一切許可されなくなっちゃうんだ。たとえnullであってもね」

(´・ω・`) 「おー、それだと困っちゃうね。必須カラムじゃない時に空白が許可されなくなっちゃうよ」

( ´∀`) 「なので、nullを許容するカラムで独自validationを定義する時は、必ずallow_blankをtrueにしてあげてね」

(´・ω・`) 「はーい」

————————————————————

( ´∀`) 「今回はRSpecを書く前の準備として、独自validationの書き方、呼び出し方を勉強したよ」

(´・ω・`) 「正規表現さえ扱えれば、色んなvalidationを作って色んなところで使えちゃうから便利だね」

( ´∀`) 「次回はこの独自validationに対してテストを書いていくよ」

(´・ω・`) 「正規表現を使うと、条件が複雑だからテストケースも複雑でたくさんになりそうだね」

( ´∀`) 「テストケースさえ羅列して用意できれば、簡単にテストが書けるような方法を用意するから、楽しみにしててね」

(´・ω・`) 「はーい」

————————————————————

今回はRSpecの本筋とは関係ない記事になってしまいましたが、
独自に定義できるvalidatorは非常に便利なので、積極的に使っていきましょう。

次回はvalidatorに対してたくさんのテストケースを一気に試す方法を紹介しますので、お楽しみに。

この記事に対してコメントを書く