見出し画像

【応用45%】TECHCAMP名古屋16日目

Ruby on Railsで9個、RSpecで23個のことについて学んだので、それぞれ説明します

★Ruby on Railsで学んだこと★
1.RSpecインストール時に作成されるrails_helper.rbとは
RailsにおいてRSpecを利用する際に、共通の設定を書いておくファイルです
各テスト用ファイルでこのファイルを読み込むことで、共通の設定や、メソッドを適用します

2.RSpecインストール時に作成されるspec_helper.rbとは
RSpec用の共通の設定を書いておくファイルですが、こちらはRSpecをRailsなしで利用する際に利用します

3..rspecに記述する--format documentationの意味
rspecを実行した時にterminalにきれいに出力してくれます

4.RSpecを実行するコマンド
bundle exec rspec

5.specファイルを置く場所
specの下にmodelsディレクトリやcontrollersディレクトリを作成し、その下にspecファイルを置きます

6.モデルクラスで最大6文字の制約を付与する方法
validates :nickname, length: {maximum: 6}

validatesでカラム名を指定し、レングス マキシマム 6とします

7.データベース側で、既存のカラムに文字数制限を付与する方法
rails g migration ChangeNicknameFromUsers
チェンジ カラム名 フロム モデル名

でマイグレーションファイルを作成します

add_columnは使わず、
change_column :users, :nickname, :string, limit: 6

チェンジカラムを使い、リミット文字数とします

8.RSpecを導入する方法

1.Gemfileにgem ‘rspec-rails'を記述します
2.bundle installを実行します
3.rails g rspec:installを実行します
4.terminalでテスト実行時に整形して表示するために.rspecに--format documentationを記述します
5.specディレクトリにmodelsディレクトリとcontrollersディレクトリを作成します
6.modelsディレクトリやcontrollersディレクトリにテストコードを作成します
7.bundle exec rspecが実行できればOKです

9.factory_botを導入する方法
1.Gemfileにgem ’factory_bot_rails’を記述します
2.bundle installします
3.rspecでより短いコードでrspecが記述できるように、spec/rails_helper.rbに
config.include FactoryBot::Syntax::Methodsを記述します

★RSpecで学んだこと★
1.describe
テストのまとまりを作成します

2.example
実際に動作するテストコードのまとまりのことです

3.it
exampleを作成します

4.エクスペクテーション
実際に評価される式のことです

5.expectメソッド
エクスペクテーションの文法の1つです
expect(X).to eq Yとすると、
Xの部分に入れた式が、Yと等しい場合はテストが成功します
除くという意味を持つexceptとのつづりの違いに注意です

6.valid?メソッド
バリデーションにより保存ができる状態であるかどうかを確かめます

7.errorsメソッド
valid?メソッドを実行した時、バリデーションに引っかかればmessagesに何かしらのエラー文が入ります

8.マッチャ
テストの成功条件を表します
eq、include、be_validなどがあります

9.eqマッチャ
等しいかどうかを確かめます

10.includeマッチャ
指定した文字列が含まれているかどうかを確かめます

11.be_validマッチャ
すべてのバリデーションをクリアしているかどうかを確かめます

12.factory_botとは
簡単にダミーのインスタンスを作成することのできるGemです

13.factory_botのbuildメソッド
user = FactoryBot.build(:user)
引数にモデルのクラス名をシンボルで指定すると、FactoryBotクラスで作成したインスタンスを作成します

14.factory_botのcreateメソッド
buildメソッドと同じ動作をしたあと、実際にDBに保存します
テストが終わったあとは、DBがロールバック、つまりDBから削除されます

15.factory_botの記法の省略
spec/rails_helper.rbにconfig.include FactoryBot::Syntax::Methodsを追加すると
buildメソッドやcreateメソッドを利用する時にFactoryBot.と記述する必要がなくなります

user = FactoryBot.build(:user)
user = build(:user)

16.すべてのrspecファイルの1行目に記述しなければならないもの
require ‘rails_helper’

17.factory_botのbuildメソッドやcreateメソッドで、値を書き換えてセットする方法
モデル名のシンボルに続けて、カラム名のシンボルと値をセットすることで上書きします
user = build(:user)
user = build(:user, nickname: “shinbo”)

18.テストコードを書く際の原則
1.各exampleで期待する値は1つ
2.期待する結果をはっきりわかりやすく記述
3.起きて欲しいこと起きて欲しくないこと両方をテストする
4.境界値をテストする
5.可読性を考えつつ、適度にDRYにする

19.can't be blank
NOT NULL制約が付与されている場合に出るエラー文です

20.doesn't match Password
passwordとpassword_confirmationが不一致の場合に出るエラー文です

21.has already been taken
一意性制約を付与したカラムに重複した値がある場合に出るエラー文です

22.is too short (minimum is 6 characters)
文字数が足りない場合に出るエラー文です

23.is too long (maximum is 6 characters)
文字数オーバーの時に出るエラー文です

オマケ

TECHCAMPで作成した
Webアプリケーションを紹介します

企業に見せるポートフォリオにはしないので
紹介だけです

画面はこんな感じです

スクリーンショット 2020-03-31 14.29.18

ユーザーアカウントを作成できます

スクリーンショット 2020-03-31 14.11.06

グループを作成できます

スクリーンショット 2020-03-31 14.11.58

グループ内でメッセージの投稿や、
画像の投稿をすることができます

スクリーンショット 2020-03-31 14.21.45

ユーザー名を変更したり、
メールアドレスを変更することができます

スクリーンショット 2020-03-31 14.24.21

グループ名を変更できたり、
グループ内のメンバーを変更できます

スクリーンショット 2020-03-31 14.22.07

以上、ざっくり紹介でした

この記事が気に入ったらサポートをしてみませんか?