Torihaji's Growth Diary

Little by little, no hurry.

Everyday rails RspecによるRailsテスト入門を初心者が爆速で読んだ結果。

はじめに

みなさん、こんにちは torihaziです。

梅雨に入り(?)、雨降りしきる日が多くなった今日この頃

いかがお過ごしでしょうか。

私は通勤途中の雨は嫌いです。

スーツがびしょ濡れになるので。

無駄な前置きはさておいて

今日はタイトルの本を読了したので、その感想を書き連ねていこうと思います。

ちなみに有料であるので、内容の引用はほぼしない方針です。

leanpub.com

特に勧誘とかではないのでご安心ください。

私について

ちなみに筆者のステータスは下記です。

Rubyやプログラミングのレベル感等の判断は各自に委ねます。

現在、プログラミングスクール(HC)(2023/12~)
Ruby, Rails は今年から勉強
去年いっぱいは他スクールでPHP(自作プロダクトまで開発)
Rspecは用語だけ知ってる
minitestとかいうのも少し知ってる
本業はインフラエンジニア(サーバ構築)
shやbash等を使ったスクリプトの作成経験あり
英語は多少読める、と思っている

こういう人間が読んだ所感になります。

表現等、不適なものありましたらコメント等で

そっとご指摘ください。よろしくお願いいたします。

Good point

Rails 7 で進められていること

初回から「当然では?」という内容ですが、

私のこれまでの経験上、

プログラミングに関する書籍はアップデートされないものが多いです。

経験者や少し慣れた初心者(?)であれば 

Rails 5であっても難なく取り組めるかと思いますが

私のような初心者はその差分を汲み取りながら

進めるなんてことは少々厳しいものがあります。

学習当初から Rails 7で触ってきた私にとっては

その差分がないことはとても助かりました。

(もちろん、ゆくゆくはその差分くらい難なく取り込めるようになる予定です)

ハンズオンで進められている

読み進めていくとわかりますが、

実際にコードを記載しながら説明が進んでいきます。

例えば、最初は遠回りなコードを書いておいて

その後FactoryBotというものを使って簡略化させる。

そこで発生した「なんだ、FactoryBotって便利じゃん」という感情こそが

自身に強く働きかけ、その結果記憶にも残りやすくなります。

作者も述べていることですが、"手を動かしてみないとだめ"ということです。

ただ行っていることはそこまでレベルが高いものではなく、

簡単なものから始まっているので0から1、2、3・・・と

段階を踏んだ理解が可能です。

Bad Point

訳が不自然な箇所がある?

最初に述べておきますが、読む際に問題となるレベルではありません。

私は正直あまり気にしていません。

悪い点がないと、回しの者かと疑われるから書いただけです。

問題の訳については

「なんか不思議な日本語?でもわかるからいっか」というレベルです。

そのためどうしても気になる人は著者の方に一報入れてください。

What I learned

FactoryBot は使うべし

Factory Bot というものがあります。

これを使うことで、

  • コードの記述量が削減できたり、
  • コードがわかりやすくなり

・・・など、良いことがたくさんあります。

rails g factory_bot:model userとして作成されたコードを次のように編集し

FactoryBot.define do
  factory :user do
    user_name { 'test1' }
    email { '1@example.com' }
    tel { '09012345678' }
    birth { '2024-05-05' }
    password { 'password1' }
  end
end

こうしたときに使う側の**_spec.rbで

user = FactoryBot.build(:user)

とするだけでuser.user_nameという形で使えるようになります。

seedに近いようなものでしょうか。

ちなみに

user = FactoryBot.create(:user)

とすれば、DBに登録までしてくれます。

システムスペックとリクエストスペックの違い(?)

これについては自信がありませんが、私は下記のように2つの違いを解釈しました。

システムスペックは

ユーザの処理を実際にコードで再現して挙動を確かめるテスト

フォームへの入力からボタンのクリックまでコードで再現する

対してリクエストスペックは

URLにいろんなリクエストを飛ばしてその挙動を確かめるテスト

フォームへの入力とかはparamsで渡して代替する

というような感じです。

初めて見た時は どちらも似たようなものだと思いました。

特に ユーザの新規登録時のテストをする際

何が違うんだろうかとも思いました。

今となっては何となくわかったような、そのような感じです。

これから色々アップデートしていきたいと思います。

終わりに

いかがだったでしょうか。

正直まだ マリオで言うと 1 - 城 クリアしたくらいだと思います。

今後もっと色々なコードに触れて、

自分の知見を増やしていければと思っています。

まだまだ成長途上なので、さらに頑張りたいと思います。

お互いに頑張りましょう