1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

テストについて

Posted at

#目次
①テストとは
②テストコードのパターン
③テストコードの種類
④RSpecの使い方
⑤単体テストについて
⑥テストコードの実行の仕方

##①テストとは
専用のプログラムによってwebアプリケーションの動作を確認することをテストという。
テストをする際に、テストコードを記述する必要がある。
※テスコトードとは、アプリケーションが正しく動くか確認するためのコード。
ruby on railsでは、RSpecというgemを利用して、テストコードが実装可能である。

##②テストコードのパターン
正常系異常系がある。

正常系とは、
想定されたインプットがあった時に、想定されたアウトプットを得ることができること。例えば、ログインしたときのみ、投稿ができる
という時に、投稿ができるといったことが正常系である。

異常系とは、
想定されていないインプットがあった時に、エラーが出力されたアウトプットが得ることができること。例えば、ログインない場合は、投稿ができないときに、登録できないなどのメッセージが想定どおり出力されることを異常系という。

##③テストコードの種類
単体テストコード統合テストコードの二つがある。

単体テストコードとは、
モデルやコントローラなどの機能ごとにしっかり動くか確認するコードのこと

統合テストコードとは、
ユーザーがブラウザを操作することをコードで再現し、問題がないかを確認するコードのこと

##④RSpecの使い方
1,gemfileに記述する

Gemfile
group:development,:test do
 gem 'rspec-rails','~>4.0.0'
end

2,bundle installの実行

ターミナル
bundle install

3,RSpecのインストール

ターミナル
rails g rspec:install

4,ドキュメント形式に変更する

.spec
--require spec_helper
--format documentation こちらを記述する

理由としては、
この記述を書くことによって、テストコードのの実行中にどのスペックがパスし、どのスペックが失敗したのかがわかりやすくなる。

##⑤単体テストの記述の仕方

2つのパターンを紹介する。
1つ目は、モデルの単体テスト。

1,モデルのテストファイルを作成する

ターミナル
  rails g rspec:model client
#ここではクライエントモデルを作成する

2,テストコードの記述の仕方

spec/model/client_spec.rb
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

上記のターミナルに実行する。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?