Open9
【RSpec】各構文

describe
- クラスやシステムの機能に関するアウトラインを記述する

subject
- テストの対象物、subjectはあとに続くテストで再利用できるため、各exampleで作成する必要がない

it
- テストケース、検証する箇所

expect
- 期待値を満たしているかチェックするため実際の値を指定する
- マッチャであるeqで期待値と正しいか検証する

let
- 呼ばれたときに初めてデータを読み込むことでテスト実行を重くしない
- beforeブロックの外部で呼ばれるためセットアップに必要なテストの構造を減らすことができる
- itブロックでは使用不可、describeやcontextブロックで使用可能

let!
- letと異なり遅延読み込みをせず、即時で実行される

example
- テストケース(itと同じ)

context
- 特定の状態に関するアウトラインを記述する

person.rb
class Person
def initialize(name = 'no name', age = 0)
@name = name
@age = age
end
def name
@name
end
def age
@age
end
end
person_spec.rb
require 'rails_helper'
RSpec.describe Person, type: :class do
subject(:default_person) { Person.new }
describe 'initialize' do
it 'should return a new instance of Person' do
expect(default_person).to be_an_instance_of(Person)
end
end
describe 'name' do
context 'when name is provided' do
let(:person) { Person.new('test') }
it 'should return name' do
expect(person.name).to eq('test')
end
end
context 'when name is not provided' do
it 'should return no name' do
expect(default_person.name).to eq('no name')
end
end
end
describe 'age' do
context 'when age is provided' do
let(:person) { Person.new('test', 25) }
it 'should return age' do
expect(person.age).to eq(25)
end
end
context 'when age is not provided' do
it 'should return 0' do
expect(default_person.age).to eq(0)
end
end
end
end
検証
作成者以外のコメントは許可されていません