Kawaii Lab

プログラミングとかサービス開発とか

RSpec テストルール

各Roleにおけるルール

describe

ユーズケースが記述される
e.g: 800m圏内のレストランを取得する

context

ユーズケースの中で前提条件が複数存在する場合に記述される
e.g.: 営業中のレストランが存在しない時

before

exampleが依存するオブジェクトを準備する
e.g: クラスインスタンスの生成、環境変数のセット、ログレベルの変更

依存する外部要素は全てモック化すること e.g: 外部API,対象クラスに含まれるメソッド以外の外部メソッド

after

exampleの成果物を削除する
e.g: 出力ファイル(.csv, .log)の削除

it

exampleの結果のみ担保する

  • 対象メソッドが想定されている結果を返しているか

  • 対象メソッド内で呼び出されている外部メソッドが以下の条件を満たしているか

    • モック化されている
    • 想定された引数である
    • 呼び出されている
  • 例外の場合は以下の条件が想定されている結果と一致するか

    • メッセージ

各レイヤー層におけるルール

controller

リクエストハンドリングを行なってレスポンスを返しているかを担保する

  • 注意点

レスポンス内容は関与しない

domain

ユーズケースに対応する成果物が生成されているかを担保する

  • 注意点

ユーズケースに基づいてテストをする為、publicなメソッドのみテスト対象とする
1 usecase == 1 public method

infrastructure

外部コンポーネントを呼び出した時の以下結果を担保する

  • 健全なレスポンスを取得した場合、例外が存在しないこと
  • 不健全なレスポンスを取得した場合、想定された例外が投げられていること

  • 注意点

現時点では外部APIのメソッド自体をモック化するが、将来的には外部API自体のモックを作成する。