【連載 RSpec入門講座】第6回 「destroyのテストを書いてみよう o(`ω´#)o」


こんにちは。kanotanです。

ロウきゅーぶ!のさいたまスーパーアリーナでのライブに行ってきたのでめっちゃ筋肉痛です。

エンジニア業務は運動する機会が少ないので、サイリウム振ったりジャンプしまくったりするとすぐ疲れますね。

RSpecの方も盛り上がって行きましょう。それではスタート!

前回 「edit・updateのテストを書いてみよう ∑(・ω・ノ)ノ」は → こちら

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

(´・ω・`) 「前回まででindex・show・new・create・edit・updateのRSpecを書いたね」

( ´∀`) 「あと残るはあいつだけ。そう、destroy」

(´・ω・`) 「ゴジラとかガンダムSEEDに出てきそうな感じだね」

( ´∀`) 「覆面かぶってプロレスもやってそうだね」

(´・ω・`) 「・・・アホなこと言ってないで始めよっか」

( ´∀`) 「せやな」

( ´∀`) 「destroyの書き方の例としてはこんな感じだね」

(´・ω・`) 「目新しいのはexpectってところかな」

( ´∀`) 「そうだね。このexpectっていうのは実はかなり大事だからしっかりやっておこう」

(´・ω・`) 「うん」

( ´∀`) 「意味としては、『destroyのrequestを投げた時、Shopの数が-1されることを期待する』って感じかな」

(´・ω・`) 「destroyすると、DBの値が1件削除されるもんね」

( ´∀`) 「実はこのexpect、shouldに取って代わってRSpecで推奨されはじめている書き方なんだよ」

(´・ω・`) 「へぇー、そうなんだ」

( ´∀`) 「ちなみにexpectでshouldの部分を書くとこんな感じになるよ」

( ´∀`) 「基本的には A.should B ってあったら、 expect(A).to B って書いてあげればいい感じだね。」

(´・ω・`) 「へー、こんな感じになるんだね」

( ´∀`) 「expectの方が新しい記法だから、それに合わせて書いていくのもいいだろうね」

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

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

(´・ω・`) 「今回でcontrollerのテストは一通りやったね」

( ´∀`) 「RSpecもなかなか奥が深いでしょ?」

(´・ω・`) 「慣れると結構楽しいね!」

( ´∀`) 「今まで習ったことを応用すれば、同じようなテストケースでも色んなことができるよ。たとえば今回のコードだと、destroyされたらデータがDBにおいて永続化されなくなるから、『not_be_persisted』なんて書くこともできるし」

(´・ω・`) 「おー、そんな書き方が!」

( ´∀`) 「逆に今回覚えたexpectをcreateの時に使って、『by(-1)』を『by(1)』に変えると、数が1件増えることをチェックするっていうのもできるよ」

(´・ω・`) 「なるほどー。まずは色んな型を覚えて、状況に応じて使い分けろってことか」

( ´∀`) 「そうだよ。だから色んな書き方を調べて勉強していってね」

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

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

今回でcontrollerのテストが一通り完結です。

実際のところまだまだmodel等々色々残っているので、書くことはまだまだあります。

次回は今回の講座でもちょくちょく話題に出てたFactoryGirlあたりを紹介しようかと思います。

controllerのテストが終わっても、RSpecの勉強を続けていきましょう!

次回 「FactoryGirlってどんな女の子? ☆(ゝω・)vキャピ」は → こちら

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