こちらの記事は「CBcloud Advent Calendar 2024」20日目の記事です。
他の方の記事もぜひ見てください
はじめに
とりあえず、Rspec に関して書こうと決めた感じです(かなりここまでで行き当たりばったり....)
どうせ書くならば、ちょっとぐらい頑張りたいと思ったので、久しぶりにコードをしっかり触ってみることにしました。
(今までではリーダー業務+納期に間に合わせるコーディング+全員分のPRレビューをやってきたので、本気で調べられてなかったので(がっつり言い訳))
本記事のターゲット
初心者の方〜3年目ぐらいの人をターゲットにしてます。
(可能な限りわかりやすく書き砕いたつもり....)
RSpec の書き方を調べつつ、書いてみる
RSpec を書く前に知っておきたいのは、Junichi Ito さんの記事が上がるはず!(ですよね...)
describe
や context
の使い方などそもそもの流儀を学習できるサイトで、自分も4~5 年前ぐらいに読んだ記憶があります。
ただ開発チームによって書き方が違うパターンもあり、RSpec でも色々流派やこだわりがあるので、開発チームの認識揃えるのに困るなぁと思った記憶があります。
ただ基本的には describe
と context
はこんな感じで使われる想定です。
describe 'タイポチェック' do # ここでやりたいテストを明示する(テスト観点の明記)
context 'タイポがある場合' do # テストのパターンを明記(ここで「ある」場合を見るならば「ない」場合もみる)
it 'タイポが修正されること' do # テスト結果を明記
...
end
end
context 'タイポがない場合' do # テストのパターンを明記(ここで「ない」場合を見るならば「ある」場合もみる)
it '何も修正されないこと' do # テスト結果を明記
...
end
end
end
context
には ~~~の場合
と記載するようにすることで、テストケースの実施パターンを想像させるように意識付けてます。
(英語では When ...
と記載される認識なので、あえてこうしてます)
高速化を目指してみる
高速化を本気で目指すと、色々工夫することができます!!!
1. データの生成まわり
1-1. データを作成(create) せずに build で頑張る
1-2. DB への初期化データをなるべく insert しない
2. 処理の工夫
2-1. テストの実施を並列化する
2-2. sleep の利用を減らす
2-3. なるべくモックを使う(連携テストなど)
高速化周りは、個人的には Kaigi on Rails 2021 がかなり熱かったイメージ(もちろん毎年すごい発表がありますが...)
最近??でも企業から発信している例も多くかなり熱が上がっている印象です
さぁ「高速化を目指してやっていくぞー!」という気概は高まった状態になりました
高速化を目指したかった...
やり方を調べて、やろうと思った(ここで投稿日前日であることに気づく....)
気持ちは来年に持ち越す方針にするのが良さそうだと気づき、高速化は来年のどこかで投稿します
(ちゃんとした結果を出したくて、中途半端は嫌すぎるので....ごめんなさい)
最後に
弊社のエンジニアもまだまだ募集しているので、ぜひカジュアル面談にも参加してみてください
エンジニアの記事もあるので、ぜひご覧ください