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
外部コンポーネントを呼び出した時の以下結果を担保する
- 健全なレスポンスを取得した場合、例外が存在しないこと
不健全なレスポンスを取得した場合、想定された例外が投げられていること
注意点