プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • Rspec
  • 【Rspec】バージョン、設定ファイル(.rspec)、全体像を把握する。
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【Rspec】バージョン、設定ファイル(.rspec)、全体像を把握する。

12.01

  • miyabisan2
  • コメントを書く

この記事は3分で読めます

バージョン

バージョン リリース年月 特徴
2.1.1 2012年 ・shouldに代わる新しいexpect構文を追加した。(今でもStack OverflowとかでRspecの検索をすると古いshould構文が使われていたりする。)
2.1.4 ・ここまではbe_truthyの代わりにbe_trueというマッチャーが同じ意味で使われいた。
3.0 2014年春 ・Rspec2.14と近いシンタックスだが多少異なっている。

・be_trueが廃止された。

3.3 ・「aggregate_failures(失敗の集約)」という機能が導入されて仮にあるexampleが失敗してもその後のexampleは続行することができるようになりました。
3.6 2017年4月 ・Rails5.1と共にリリースされた。

・Rspec3.0とほぼ互換性を保っている。

3.7 2017年4月 ・system specがサポートされました。(Rails5.1以降のアプリなら適用可能)
3.8 2018年

設定ファイル(.rspec)

Rspecのインストールコマンドを実行するとRspecの設定ファイル(.rspec)が生成されます。Rspec設定には様々なオプションがあります。一度設定したら変更が不可能ということはなく後からいくらでも変更することは可能なのでテスト中でも自由にカスタマイズすると良いでしょう。

--format documentation

テスト実行中にどのスペックか通過してどのスペックが失敗したかをわかりやすく表示してくれます。また、スペックのアウトラインを美しく出力してくれます。(この出力に関しては仕様書のように使用することも可能です。)

--warnings

この設定をすると自分のアプリや使用中のGemから出力された警告を全て表示します。開発中も非推奨メソッドを使った場合の警告とかは意識する必要があるので便利です。

複数機能のテスト

Feature Spec

Rails5.1以降では非推奨になっています。System Specと同じE2Eテストになります。長らくCapybaraと連携するために使われてきましたがDBの扱い等の面で不便な点が多かったです。

現在はSystem Specで代替されています。(ただ、ほとんどフィーチャースペックとシステムスペックは同じなので知識として覚えてしまえばどちらも使えるようになります。)

他のスペックとの比較

モデルスペックやコントローラスペックに比べてセットアップや実行に時間がかかります。

Capybaraと組み合わせて使う。

フィーチャースペックのステップを定義したり、アプリケーションの実際に使われ方をシミュレートしたりできます。準備に関しては下記の記事を参考にしてみてください。

【Rspec】System Spec(システムスペック)の基本

フィーチャースペックのテストファイルを作成する。

1
rails g rspec:feature モデル名(users等)

System Spec

E2Eテストです。ブラウザを使ったテストを外部的に確認できます。ビューに関してはユーザーニーズにより変化しやすいパーツになるので自動化は大変になりやすいので注意です。以前は「Feature Spec」が使われていましたがRails5.1以降はこちらが推奨されています。

Feature Specと比べたメリット

  • テスト終了時にDBが自動ロールバックされる。
  • テスト失敗時にスクリーンショットを自動で取って表示してくれる。
  • driven_byを使えばspecごとに簡単にブラウザを切り替えれる。

Request Spec

結合テストです。複数機能の内部処理の動きを確認します。

用途

E2Eをするまでもないがモデルのテストや単体テストでは確認しにくいテストをします。Web APIのテストを行う場合に活用されることが多いです。

Controller Spec(非推奨)

Rails5.0の登場により非推奨になりました。Request Specを使うことが推奨されていますし、E2Eテストをコントローラー別に整理すれば代用もできます。Railsのコントローラー単位の機能テストになります。

用途

正直あまり使いませんが、強いて言えばセッションにアクセスが可能なのでセッション情報に着目したテストをしたい場合は選択肢に入るかもしれません。ただ、セッションは変化しやすい情報ではあるので保守では注意が必要です

個別部品のテスト

Model Spec

モデル部品のテストになります。

用途

検証やデータ制御等、かなり細かい粒度でテストを記述するのでTDD開発には非常に適しています。

Routing Spec

ルーティング部品のテストになります。

用途

複雑なルーティングを設定する場合に使ったりします。

View Spec

ビュー部品のテストになります。

用途

他のテストでカバーできるので使いません。

Helper Spec

ヘルパー部品のテストになります。

用途

正直あまり使わないですがかなり凝った処理をヘルパーで実装した場合は選択肢に入るかもしれません。

Mailer Spec

メーラー部品のテストになります。

用途

メール送信機能を実装した場合は十分使う可能性があります。

Job Spec

ジョブ部品のテストになります。

用途

ジョブ機能を実装した場合は十分使う可能性があります。

スポンサーリンク
  • 2019 12.01
  • miyabisan2
  • コメントを書く
  • Rspec
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2020 03.21

    ソフトウェアテストの基礎知識(モックとスタブ、テストピラミッド、テストケース例、負荷テスト)

  2. 2020 03.21

    【RSpec】高速化の手法(ParallelTestsなど)

  3. 2019 12.01

    【Rspec】itのマッチャの種類(カスタムマッチャ、aggregate_failuresなども)

  4. 2021 02.07

    【Rails】「devise」のテストコードの書き方や用意すると良いテストケース

  5. 2020 03.18

    【Rspec】Capybaraについて

  6. 2019 12.01

    【Rspec】基本的な書き方、タグなど

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【システム開発】テストコードを書くことの5つのメリット…

【Rspec】RspecのインストールやRailsで使…

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー