LoginSignup
1
2

More than 3 years have passed since last update.

[Rails] Rspecでテストコードの実装①

Last updated at Posted at 2021-05-01

はじめに

本日より何回かに分けて、テストコードに関しての知識をこちらでアウトプットできればと思います

テストの必要性

絶対に壊れない機械がないように、絶対に不具合のないシステムはありません。しかし、サービスの一時停止や不具合は、サービスへの信頼度を著しく下げ、ユーザ離れを引き起こします。(もっといろいろな問題はありますが)
こうした問題を起こさないように、ちょっとでも防ぐためにテストを行います。例えば、何か新しい機能を追加した時に他の機能との競合を確認しないままリリースしてしまえば、メイン機能が止まる可能性もあるわけです。とはいえ、毎回機能実装のたびに手動で確認するのは非効率でミスが起こりやすいです。そこで活躍するのが、テストコードです。

テストコードとは。

テストコードとは、動作を確認するためのコードを書くことで、自動で挙動確認するという方法です。こうしたコードをテストコードと言います。Railsにおいては、今回、テストコードの実装にはRspecを使います。

基本的に、境界値分析など様々なテストケースの考え方があります。この記事では、特にわかりやすい正常系と異常系のテスト行います。

正常系

「ユーザーが開発者の意図する操作を行った時の挙動」をテストするもの

異常系

「ユーザーが開発者の意図しない操作を行った時の挙動」をテストするもの

テストの種類

テストは大きく分けて単体テストと結合テストの2つがあります。

単体テスト

モデルやコントローラーといった機能ごとのテスト。例えば、バリデーションが本当に機能しているかなどを調べます

結合テスト

ユーザーがブラウザで操作する一連の流れを再現して、問題がないか確かめます。例えば、「ユーザはログイン情報を入力し、送信ボタンを押したら、成功した旨が表示されマイページにと遷移するかどうか」を確認したりします。

テストコード実装準備①

テストコードの実装には、Rspecというgemを使用します。早速インストールしましょう。
Gemfileに以下を記載しましょう

group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
  gem 'rspec-rails', '~> 4.0.0'
end

ターミナルでbundle installを忘れないように!!!!

次に、Rspecの設定をします。
以下のように、コマンドを打ってください。

rails g rspec:install

このコマンドで生成されたファイルのうち.rspecファイルを開き、以下のように記述します。
テストコードの結果をターミナル上に可視化するための記述です。

--require spec_helper
--format documentation

テストコード実装準備

ここからはUserモデルのテストコードを書く準備を行います。

 rails g rspec:model user

これを行うと、以下のファイルが生成されます。

spec/models/user_spec.rb
require 'rails_helper'

RSpec.describe User, type: :model do
  pending "add some examples to (or delete) #{__FILE__}"
end

これからはこのファイルにテストコードを記述していくこととなります。

ちなみに、一行目のrails_helperはRspecを用いてRailsの機能をテストするときに、共通の設定を書いておくファイルです。各テスト用ファイルでspec/rails_helper.rbを読み込むことで、共通の設定やメソッドを適用します。
rails gコマンドでテストファイルを生成すると、rails_helperを読み込む記述が、自動的追加されます。

おわりに

今回は一旦概念の理解と準備までを完了しました!
次回は実際にテストコードを実装していきましょう!!!

つづき!!!↓
Rspecでテストコードの実装②

1
2
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
2