#目次
①テストとは
②テストコードのパターン
③テストコードの種類
④RSpecの使い方
⑤単体テストについて
⑥テストコードの実行の仕方
##①テストとは
専用のプログラムによってwebアプリケーションの動作を確認することをテストという。
テストをする際に、テストコードを記述する必要がある。
※テスコトードとは、アプリケーションが正しく動くか確認するためのコード。
ruby on railsでは、RSpecというgemを利用して、テストコードが実装可能である。
##②テストコードのパターン
正常系と異常系がある。
正常系とは、
想定されたインプットがあった時に、想定されたアウトプットを得ることができること。例えば、ログインしたときのみ、投稿ができる
という時に、投稿ができるといったことが正常系である。
異常系とは、
想定されていないインプットがあった時に、エラーが出力されたアウトプットが得ることができること。例えば、ログインない場合は、投稿ができないときに、登録できないなどのメッセージが想定どおり出力されることを異常系という。
##③テストコードの種類
単体テストコードと統合テストコードの二つがある。
単体テストコードとは、
モデルやコントローラなどの機能ごとにしっかり動くか確認するコードのこと
統合テストコードとは、
ユーザーがブラウザを操作することをコードで再現し、問題がないかを確認するコードのこと
##④RSpecの使い方
1,gemfileに記述する
group:development,:test do
gem 'rspec-rails','~>4.0.0'
end
2,bundle installの実行
bundle install
3,RSpecのインストール
rails g rspec:install
4,ドキュメント形式に変更する
--require spec_helper
--format documentation ←こちらを記述する
理由としては、
この記述を書くことによって、テストコードのの実行中にどのスペックがパスし、どのスペックが失敗したのかがわかりやすくなる。
##⑤単体テストの記述の仕方
2つのパターンを紹介する。
1つ目は、モデルの単体テスト。
1,モデルのテストファイルを作成する
rails g rspec:model client
#ここではクライエントモデルを作成する
2,テストコードの記述の仕方
1 require 'rails_helper'
2 describe Client do
3 describe 'クライエントの新規の登録' do
4 it "nameが無ければクライントの登録はできない" do
5 client = Client.new(name: "",email:"aaa@gmail",password:"11111",password_confirmation:"11111")
6 client.valid?
7 expect(client.errors.full_messages).to include("Name can't be blank")
8 end
9 end
10 end
上記のコードの説明
2行目のdescribeとは、
グループ分けをするメソッド。例えば、今回の場合は、Clientモデルに対してテストを行うといったように、どの機能に対してテストをするぞという宣言のようなものと理解すれば良い。3行目もdescribeがあるが、入れ子構造を取ることもできる。
4行目のitについて、
何かの処理をするのではなくて、プログラムの仕様を記述したものである。
7行目expectについて、
こちらはテスト対象を検証するためのメソッド。書き方としては、
expect(実行結果).to eq 想定の結果
toの次にくるものをmatcher(マッチャー)と呼ばれる。
matcherの種類としては、
matcher | 使い方 | 意味 |
---|---|---|
eq(値) | expect(1+1).to eq 2 | 1+1は2と等しい |
include | expect([1,2,3]).to include 3 | []の配列に3が含まれる |
be_valid | expect(client).to be_valid | railsのclientモデルのvalidationに成功すること |
##⑥テストコードの実行の仕方
bundle exec rspec spec/ディレクトリ名/ファイル名_spec.rb
上記のターミナルに実行する。