第2章 RSpec のセットアップ

この章の主な流れ

  • budnelを使ってRspecのインストール
  • テスト用のデーターベースを作成
  • テストしたい項目をテストできるようにRspecを設定
  • 新しい機能を追加するとにテスト用のデータファイルを自動で生成できるようにアプリケーション側で設定

1.bundleインストールを行う

group :development, :test do gem 'rspec-rails' #開発とテスト環境だけのインストール end bundle install

rspec-railsがやってくれること

  • rspec-coreその他の独立した 必要なgemとかをインストールしてくれる
  • rails向けの便利な機能を提供してくれる

2.テスト用データベースの準備

config/database.yml ファイルの中身

test: <<: *default database: db/test.sqlite3 #MySQL や PostgreSQL を使っている場合 test: <<: *default database: projects_test

コードが見つからない場合はconfig/database.ymlに上記の記載を行いrake タスクを実行して接続可能なデータベースを作成を行う

bin/rails db:create:all

rake タスクってなに?

railsガイド

Rackは、RubyのWebアプリケーションに対して、モジュール化された最小限のインターフェイスを提供して、インターフェイスを広範囲に使えるようにします。RackはHTTPリクエストとレスポンスを可能なかぎり簡単な方法でラッピングすることで、Webサーバー、Webフレームワーク、その間に位置するソフトウェア(ミドルウェアと呼ばれています)のAPIを1つのメソッド呼び出しの形にまとめます。


rakeタスクわかりやすく

Railsで定期的に実行したい処理をRubyコードでタスクとして定義しておき、必要なときに呼び出して実行することができる機能
特徴としてアプリケーションを起動せずにターミナル上で実行でき、サーバを起動せずに定義した処理を実行できる

バックラウンドでタスクの実行にはwheneverというgemを使用する。


db:create:allコマンド
database.ymlに定義してあるデータベースを全て作成
qiitaより

逆にすべての環境のDPを削除したい時

rake db:drop:all

3.RSpec の設定

Rspecファイル群のインストール

bin/rails generate rspec:install create .rspec create spec create spec/spec_helper.rb create spec/rails_helper.rb

生成されるファイル

  • .rspec
    設定ファイル

    ​​--format documentation

    format documentation
    テスト結果の出力を変える

    ​​#format documentation記載なし ​​..... ​​Finished in 0.40011 seconds (files took 4.53 seconds to load) ​​5 examples, 0 failures ​​#format documentation記載あり ​​ Post ​​バリデーションの確認 ​​ titalカラム ​​ タイトルが空または3文字以内の場合postが作成されないこと ​​ タイトルが30文字以上の場合はpostが作成されないこと ​​ 日付に関するバリデーション ​​ 開始日が今日より過去の場合postが作成されないこと ​​ 終了日が開始日より過去の場合postが作成されない事 ​​ memoカラム ​​ メモが30文字以上の場合はpostが作成されないこと ​​Finished in 0.25123 seconds (files took 2 seconds to load) ​​5 examples, 0 failures

    どのテストで??どこのテストが通ったのかがわかりやすい

  • spec_helper.rb、rails_helper.rb
    テストで使用する設定ファイルの記載を行う場所

インストールができている場合

bundle exec rspec No examples found. Finished in 0.00047 seconds (files took 0.11704 seconds to load) 0 examples, 0 failures

binstubを使ってコマンドを短くすることができる。

何かしらのRailsアプリケーションを実行するときはbundleを使用が必須であり実行コマンドがどうしても長くなってしまうRspecの場合はbudle exec rpsecになる
少しでもコマンドを短くする方法としてbinstubコマンドを使用する。

インストール後、RubyGems は実行可能ファイルと共に以下のものを用意してくれる

bundle binstubs rspec-core コマンド実行後 ↓↓↓↓ #コマンド実行可能 bin/rspec #binディレクトリー内にrsepcの実行ファイルが生成される。 bin/ ├── bundle ├── importmap ├── rails ├── rake ├── rspec #作成される └── setup

binstubについて

4.ジェネレーターの設定について

Rspecを導入済みなのでジェネレーターのコマンドを使用してもminitestのファイルは作成されない代わりに、Rspecのファイルがspecディレクトリーに作成されて不必要なファイルも作成されてしまうここでは最初から作られないようにどのファイルを作成しないかを決めることができる。

falseを記載すれば作られない
config/application.rb

class Application < Rails::Application # Initialize configuration defaults for originally generated Rails version. config.load_defaults 7.0 config.generators do |g| g.test_framework :rspec, fixtures: false, view_specs: false, end end

テスト以外のファイルについて

ヘルパー、jsなどいらないファイル名の記載することがで
作成をスキップすることができる。

config.generators do |g|
  g.stylesheets false
  g.javascripts false
  g.helper false
Select a repo