【Rails】RSpec、Capybara、FactoryBotの使い方
テスト用ライブラリ
・RSpec
RubyにおけるBDD(振舞駆動開発)のためのテスティングフレームワーク。
Rspecを利用する上で、「テスト」ではなく「spec」という用語を利用する。
・Capybara
WebアプリケーションのE2E(End-to-End)のテスト用フレームワーク。Rail5.1からRailsに同梱済。
MinitestやRSpecなどのテスティングライブラリと合わせて使う。
・FactoryBot
テスト用データの作成をサポートするgem。
テスト用のデータを簡単に用意し、テストから呼び出して利用することができる。
一般にデータを作成することを簡単にする仕組みは「ファクトリ」と呼ばれている。
事前準備
Rspec
Gemfileにて以下の文を追加し、RSpecのRails用の機能が追加される。
gem 'rspec-rails','~>3.7'
$bundle install
gemのインストールが終われば、以下のgenerateを実行。
$ rails g rspec:install
最後にRailsアプリケーションを作成した時に自動で作られたtestディレクトリを削除。
理由としては、Minitestを使う場合にはtestディレクトリ下にテストファイルを格納していくが、Rspecではspecというディレクトリ下にファイルを格納していくため。
$rm -r ./test
Capybara
Capybaraはrails newの時にbundle installによりすでにインストールされているので、
RspecでCapybaraを利用するための準備を行う。
spec/spec_helperにて編集を行う。
#See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
↓この文を追加
require 'capybara/rspec'
RSpec.configure do |config|
config.before(:each,type: :system) do
driven_by :selenium_chrome_headless
end
↑この文を追加
# rspec-expectations config goes here. You can use an alternate
FactoryBot
Gemfileにて以下の文を追加。
gem 'factory_bot_rails','~>4.11'
$ bundle install
specの書き方
・itに到達する前にdescribeやcontextを何個も重ねて使うことができる。(type指定のみ外側のdescribeのみ使用可能)
・内部のdescribe、context、itを並べて複数記述することもできる。
describe [テスト対象] , type: [Specの種類] do
context [ある状況・状態] do
before do
[事前準備]
end
it [期待の概要] do
[期待する動作]
end
end
end
用語の意味
◆テストケースを分類・整理する・・・・・・・describe、context
◆テストコードを実行する・・・・・・・・・・before、it
describe
describeには、何について仕様を記述しようとしているのか(テストの対象)
を記述。
context
contextは、テストの内容を「状況・状態」のバリエーションごとに分類するため
に利用。
ユーザーの入力内容が正しいかどうか、ログインしているかどうか、管理者かどうかといった、各種の条件をcontextに記述し、続くブロックの中にそのような条件下で想定する動作を記述していく。
before
beforeはその領域全体の「前提条件」を実現するためのコードを記述する場所。
describeやcontext内にbeforeを記述すると、対応するdescribeやcontextの領域内のテストコードを実行する前に、beforeのブロック内に書かれたコードを実行。
it
末端のテストケース。itは期待する動作を文章と、ブロック内のコードで実行。
itの中に記述したものが期待通りに対象が動作すれば、Specが1件成功したことになる。
beforeに書くような処理は、内部のitの中に書くことも出来るが、前提条件なのであればbeforeに書くほうがテストとして読みやすくなる。
またbeforeの処理は、itが実行される度に新たに実行されるので、あるテストケースのせいで別のテストケースが影響されることは基本的には無い。
テストの実行コマンド
$ bundle exec rspec テストしたいファイル
参考著書
Author And Source
この問題について(【Rails】RSpec、Capybara、FactoryBotの使い方), 我々は、より多くの情報をここで見つけました https://qiita.com/mmaumtjgj/items/0798eb4c3ce062bd505f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .