プログラミング

[Rails・Docker]初めてのRSpec

こんにちは、Nanayakuです。

今回は、Docker環境で自分が行ったRSpecの導入から実行までの流れを紹介します。

導入

Gemfileの「group :development, :test」に以下のGemを追加しました。

「rspec-rails」は、RSpecの本体で自分はバージョン3.8を指定しました。

「spring-commands-rspec」は、設定を行えばRSpecを高速化(実行時間の短縮)する事ができます。

不要であれば、「rspec-rails」のみGemfileに追加します。

私はDockerで作成しているため、以下のコマンドでbundle installしました。

その後、初期ファイルをインストールします。

実行後、以下の4つのファイルが作成されます。

メモ

作成した「.rspecファイル」は、rspecコマンドを実行した時に、このファイルに記入したオプションを自動で付与できます。

デフォルトでは「--require spec_helper」と言うオプションのみあります。

「--color」「--format documentation」を追記するとRSpec実行時、色付けされて見やすくなります。

 

実行

以下のコマンドでRSpecを実行する事ができます。(通常は$ rspecで実行できます)

テストを作成していないため、画像のように出力されます。

 

Springを使用

Spring を使ってRSpecを実行するために、以下のコマンドで「bin/rspecファイル」を作成しました。

ファイルの中身は以下のうようになっています。

これは、以下のコマンドで実行する事ができます。(通常はbin/rspec

テストを作成していないので、上記の「$ docker-compose exec web rspec」と同じものが出力されます。

 

テストファイルの作成

以下の記事を参考に、テストファイルを作成しました。

RSpecではテストコードのことをスペックと言う。
例えばModelのテストコードはModelSpec、ControllerのテストコードはControllerSpecと呼ばれる。

それぞれのスペックのファイル名は、対象のファイル名_spec.rbと命名する。

Railsの場合、$rails g rspec:(model,controller,viewなど) ファイル名 とすることで必要最低限のテンプレートが書かれた状態でファイルが生成出来る。

RailsにRSpecを導入する方法とやさしい解説

今回、Userモデルの「name」の文字数制限についてのテストを作成していきます。

今回テストするソースコード

下記のコマンドでUserモデルのテストを作成します。

作成されたファイルとその中身です。

 

テストを実行

文法は使えるRSpec入門・その1「RSpecの基本的な構文や便利な機能を理解する」 - Qiita、マッチャ(matcher)は使えるRSpec入門・その2「使用頻度の高いマッチャを使いこなす」 - Qiitaを参考にして「nameが15文字の場合はtureを返し、16文字の場合falseを返すテスト」を書いてみました。

 

今回は、試しにnameのテストを行ったので、beforeやletを使用していません。

テストの結果は画像のようになります。

RSpecは、テストでエラーが発生すると、下の画像のようにどこが悪いか教えてくれます。

このエラーは、「to_not」はsaveできないと言う意味でtureを返します。

「be_falsey」は、検証結果がfalseの場合パスを通すマッチャだったため、エラーが生じました。

パスを通すには、下記のようになります。

 

参考サイト

 

まとめ

導入からテスト実行までの流れ

  1. Gem(rspec-rails)のbundle install
  2. 初期ファイルのインストール(rails generate rspec:install
  3. テストしたいスペックの作成(rails g rspec:(model,controller,viewなど) ファイル名)
  4. 生成されたファイルを編集し、テストを作成
  5. テストを実行(rspec)

 

最後に

備忘録がわりに作ったので、間違っている所とかあったら、コメントくれると嬉しいです。

-プログラミング
-

Copyright© Nanayaku blog , 2019 All Rights Reserved Powered by AFFINGER5.