参考資料
1.公式 (rspec-core)
RSpec Core 3.9 - RSpec Core - RSpec - Relish
【引用】上記URLより
rspec-core provides the structure for RSpec code examples
(Google訳)
rspec-coreは、RSpecコード例の構造を提供します。
2.【DSL】改めてDSLを調べてみた
第1回 DSLとは?:今そこにある“DSL”|gihyo.jp … 技術評論社
(↑ 参考になりました🙇🏻♀️)
3.【構造】Descrie, context, itについて
rspecのdescribe, context, subject, letなどの書き分け - kei-p3’s blog
(↑ 一番しっくりくる説明でした🙇🏻♀️)
4.例の資料(電話番号の最大桁数)
質問!ITmedia - 国内で使われる電話番号の最大桁数は?
describe, context, itの位置付け
下記、参考資料3.を参考に記述。
区分名 | 位置付け | 例 |
---|---|---|
describe | テストグループ | class, 属性, method など |
context | テストケース | 「nameがnilの場合」など |
it | 想定結果 | 「nameは有効であること」など |
コーディングイメージ
※下記は構造のイメージををざっくり掴むための記述であり、飽くまでイメージです。
テストケースは少々、強引な記述をしています。
# 【modelのテストの場合】 # model名 # (↓下記はspecファイルの自動生成時に自動で記述されている) RSpec.describe User, type: :model do # 属性1 describe 'name' do # 検証の種類 describe '必須チェック' do # 検証に対するテストケース(正常系) context 'nameにnilまたは空白以外の値がセットされている場合' do # 想定結果(正常系) it 'nameは有効であること' do ...[test_coding]... end end # 検証に対するテストケース(異常系) context 'nameにnilがセットされている場合' do # 想定結果(異常系) it 'nameは無効であること' do ...[test_coding]... end end dne end # 属性2 describe cell_phone_number do # 検証の種類 describe '桁数チェック' do # 検証に対するテストケース(正常系) context 'cell_phone_numberに11桁の数値がセットされている場合' do # 想定結果(正常系) it 'nameは有効であること' do ...[test_coding]... end end # 検証に対するテストケース(異常系) context 'cell_phone_numberに12桁の数値がセットされている場合' do # 想定結果(異常系) it 'cell_phone_numberは無効であること' do ...[test_coding]... end end end end end
※contextに具体値を記述しない理由
テストデータについて、以前、神と崇めていた人のRSpecのレクチャーで下記の様に言われました。
「意図する区分やコードであれば固定値の使用は構わないが、
それ以外の値は固定値を使用すべきではない。ランダムな値を使用すべき」
この具体例は、後日記載する「テストデータまとめ(Titleは仮)」内のGem「Faker」で記載します。