toshizou-Rails

RequestSpecのテスト項目めも

TL;DR

  • ここに示すのはテストする項目だけ、詳細はこの記事がとてもわかりやすかった
  • new, editアクションはFeature(System)Specと要相談な感じ

開発環境

  • MacOS: Mojave
  • Ruby: 2.5.7
  • Rails: 5.1.7
  • BootStrap4(classは適宜変更してください)
  • Dockerを使用




本題

注意点




テストすべき内容

テストすべき内容は主に下記の項目

  • Webリクエストが成功したか
  • 正しいページにリダイレクトされたか
  • ユーザー認証が成功したか
  • レスポンスのテンプレートに正しいオブジェクトが保存されたか
  • ビューに表示されたメッセージは適切か

ちなみにshow, editアクションのエラーを返す、表示されること(ActiveRecord::RecordNotFound)はテストをしなくてもよい(らしい)

【追記】requestテストでの確認項目は、statusとbodyだけで問題ないとする人もいる?




アクションごとに項目をあげる

indexアクション(GET#index)



showアクション(GET#show)



newアクション(GET#new)
  • リクエストが成功すること
  • newテンプレートで表示されること(<- ControllerSpec)



createアクション(POST#create)
  • パラメーターが妥当な場合
    • リクエストが成功すること
    • 新規レコードが保存されること
    • (妥当なページへ)リダイレクトすること
  • パラメーターが不正な場合
    • リクエストが成功すること
    • 新規レコードが保存されないこと
    • エラーを返す、表示されること(ActiveRecord::RecordNotFound)



editアクション(GET#edit)



updateアクション(POST#update)
  • パラメーターが妥当な場合
    • リクエストが成功すること
    • 既存レコードが更新されること
    • (妥当なページへ)リダイレクトすること
  • パラメーターが不正な場合
    • リクエストが成功すること
    • 既存レコードが更新されないこと
    • エラーを返す、表示されること(ActiveRecord::RecordNotFound)



destroyアクション(DELETE#destroy)
  • リクエストが成功すること
  • 既存レコードが削除されること
    • (妥当なページへ)リダイレクトすること



以上!!