テストコードの備忘録として記事を
書かせていただきます!!
①バリデーションの設定を行う
ここではバリデーションに関するテストを実装致します。
②Gemを追加
gemfileに
gem 'rspec-rails', '~> 4.0.0' を追加で記述
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
group :development, :testというグループの中に記述。
そうすることで、Gemの動作に制限をもたせる。
③bundle installを実行
ディレクトリの確認を忘れずに
bundle install
④Rspecインストール
rails g rspec:install
ターミナル内で生成されるファイルがこれ
create .rspec
create spec
create spec/spec_helper.rb
create spec/rails_helper.rb
⑤.rspecに設定を追加
この記述を行うとテストコードの結果をターミナル内でわかりやすく表示されるようになる。
--require spec_helper
--format documentation
⑥テストコードを記述するファイルの準備
rails g rspec:model user
実行後、create spec/models/user_spec.rb
がターミナル内で生成される。、
今回はユーザーコードの単体テストのみなので、
ユーザーモデルのテストコード用のファイルを用意します。
⑦eampleを整理する
テストコードを書くときは正常系と異常系で分ける。
例→どの時に新規登録ができて、どのようなときにできないのかを考える
うまくいくときが正常系で
うまくいかないときが異常系。
それを分けるためにはcontextで分ける!
↓create spec/models/user_spec.rbに記述する。
require 'rails_helper'
describe User do
before do
@user = FactoryBot.build(:user)
end
describe 'ユーザー新規登録' do
context '新規登録がうまくいくとき' do
it "nicknameとemail、passwordとpassword_confirmationが存在すれば登録できる" do
end
it "nicknameが6文字以下で登録できる" do
end
it "passwordが6文字以上であれば登録できる" do
end
end
context '新規登録がうまくいかないとき' do
it "nicknameが空だと登録できない" do
end
it "nicknameが7文字以上であれば登録できない" do
end
it "emailが空では登録できない" do
end
it "重複したemailが存在する場合登録できない" do
end
it "passwordが空では登録できない" do
end
it "passwordが5文字以下であれば登録できない" do
end
it "passwordが存在してもpassword_confirmationが空では登録できない" do
end
end
end
end
```
↓FactoryBotがランダムでユーザーネームを選んでくれる記述
```
@user = FactoryBot.build(:user)
```
describeとは、テストコードのグループ分けを行うメソッド
「どの機能に対してのテストを行うか」をdescribeでグループ分けし、その中に各テストコードを記述.
describeにつづくdo~endの間に、さらにdescribeメソッドを記述することで、入れ子構造をとることもできる。
```
describe 'ユーザー新規登録' do
itメソッドは、describeメソッド同様に、グループ分けを行うメソッド。
itの場合はより詳細に、「describeメソッドに記述した機能において、どのような状況のテストを行うか」を明記する。
it "nicknameが7文字以上であれば登録できない" do
end
↓続きはこちらになります。