Open38

RSpec勉強していくよ

honaminhonamin

やることリスト

  • Gitのセットアップと復習
  • Rails, Ruby インストール
  • RSpecのセットアップ
  • everydayrails-rspec-2017を読んでいく
    • 3章
    • 4章
    • 5章
honaminhonamin

Git復習

  • M1 macbook Air にGitインストールをしていくよ
  • Githubにリポジトリをつくるよ
honaminhonamin

ターミナルでgit -vしてみる。

確かにインストールされてないのでインストールする。

honaminhonamin

SSHの設定をしていく

SSHとは、Secure Shell(セキュアシェル)の略称で、リモートコンピュータと通信するためのプロトコルです。 認証部分を含めネットワーク上の通信がすべて暗号化されるため、安全に通信することができます。

honaminhonamin

Rails, Ruby インストール

  • Homebrewをインストール
honaminhonamin

m1なのでコマンド二つ必要👀
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zshrc
source ~/.zshrc

honaminhonamin

rbenv install --list-all からインストール可能なver.が見れる👀
今回はrbenv install 2.7.8

honaminhonamin

RSpecのセットアップ

サンプルアプリケーションにすでにRSpecが作られていたので、
上書きしてまっさらの状態に

honaminhonamin

3章

  • モデルのテストをする=アプリケーションのコアとなる部分をテストする
  • describe hogehoge(テスト対象のモデルなど)
  • it "fugafuga"(テスト対象の振る舞いを列挙する)
    • 振る舞いに対して、期待する結果はひとつ
honaminhonamin

モデルスペックを作成する

手作業で作成してもいいが、ジェネレートした方が間違いがなくて楽

honaminhonamin
  • バリデーションのテストは1,2行で書ける
  • テスト自体の有効性は以下の2つで証明できる
    • テスト自体を失敗するように書き換える to ⇔ to_not
    • アプリケーションコードを期待する結果が得られないように書き換える
honaminhonamin


確かにこう並ぶときれいに振る舞いがわかるなぁ

honaminhonamin

変数には、変数の使える範囲(有効範囲)が決まっています。これをスコープと言います。

honaminhonamin
  • describe
    • クラスやシステムの機能に関するアウトライン
  • context
    • 特定の状態関するアウトライン
    • describeと交換可能
  • before
    • 可能な限りbefore(:each) を使う
  • after
    • 後片付けが必要になるのであれば使う
honaminhonamin

4章

  • 意味のあるテストデータの作成
honaminhonamin
  • build
    • テストオブジェクトをメモリ内に保存する
  • create
    • テスト用データベースにオブジェクトを永続化する
honaminhonamin

ユニークなバリデーションを持つフィールドにはシーケンスを作成する

honaminhonamin

Factory bot の重複を減らす

  • ファクトリの継承を利用する
  • トレイトを利用する
honaminhonamin

コールバックを利用すれば複雑なテストシナリオも簡単にセットアップできる

honaminhonamin

ファクトリを使うにあたって

  • メリット
    • 必要なデータがあっという間に作れる
    • テストコードも短くなる
  • デメリット
    • 予期しないデータが作成される可能性がある
    • テストが遅くなる可能性がある

テストの読みやすさと速さを保つために色々な組み合わせが必要