#はじめに
単体テストコードはフリマアプリ作成時にしっかり書いたのですが、結合テストは書いていなかったのでオリジナルアプリでは書いていきたいと思います。
その中で学習したことをアウトプットとして投稿させて頂きます。
#単体テストと結合テストの違い(単体テストの場合)
単体テストは機能ごとにテストを行います。
例えばuserの単体テストコードの場合
describe 'ユーザー新規登録' do
context '登録できるとき' do
it 'nickname,email,password,company_name,profession_idが存在する場合は登録ができる' do
end
end
context '登録ができないとき' do
end
end
モデルやコントローラーの機能ごとに問題がないかバリデーションの挙動を確認します。
単体テストと結合テストの違い(結合テストの場合)
結合テストの場合はユーザーがアプリを使用する一連の流れを確認するものになります。
ホームページ → 新規登録ボタンをクリック → 新規登録フォームに入力し完了ボタンをクリック → ホームページに遷移する
この結合テストを実行するためにはSystem Specという技術を使用します。
この技術を使用するためにはCapybaraというGemが必要ですが標準で記載されているかと思われます。
#ファイルの作成
実施にテストコードを記述していくためにファイルを作成します。
今回はユーザーについての結合テストコードを記述していきます。
rails g rspec:system users
これでファイルは作成されます。
それではexampleを整理していきます
新規登録できる場合を考えていきます。
この時のポイントは、「ユーザー目線で考える」ことです。あまり細かく考えずに、「ブラウザでどのような操作をすると、どうなるのか」を考えます。
require 'rails_helper'
RSpec.describe "新規登録", type: :system do
before do
@user = FactoryBot.build(:user)
end
context 'ユーザーが新規登録ができる時' do
it '正しい情報を入力すればユーザー新規登録ができてトップページに移動する' do
# トップページに移動する
# トップページにサインアップページへ遷移するボタンがあることを確認する
# 新規登録ページへ移動する
# ユーザー情報を入力する
# サインアップボタンを押すとユーザーモデルのカウントが1上がることを確認する
# トップページへ遷移したことを確認する
# ログアウトボタンが表示されることを確認する
# サインアップページへ遷移するボタンや、ログインページへ遷移するボタンが表示されていないことを確認する
end
end
end
実際にはアプリを操作しながら書いていくと分かりやすいです。
次は実施にコードを書いていきます。