##環境
Ruby 3.0.2
Rails 6.1.4.1
shoulda-matchers 5.0.0
shoulda-matchersを使えばバリデーションテストが1行で書けるので大変便利
##enumのテスト
model.rb
enum weather: { sunny: 0, cloudy: 1, rainy: 2 }
- define_enum_for
spec.rb
describe 'enum' do
it { is_expected.to define_enum_for(:weather).with_values(
sunny: 0,
cloudy: 1,
rainy: 2
) }
end
##バリデーションテスト
model.rb
validates :firstname, presence: true
validates :lastname, presence: true
validates :number, presence: true, uniqueness: true
validates :email, presence: true, uniqueness: true
- validate_presence_of
- validate_uniqueness_of
spec.rb
describe 'バリデーション' do
it { is_expected.to validate_presence_of :firstname }
it { is_expected.to validate_presence_of :lastname }
it { is_expected.to validate_presence_of :number }
it { is_expected.to validate_uniqueness_of :number }
it { is_expected.to validate_presence_of :email }
it { is_expected.to validate_uniqueness_of(:email).ignoring_case_sensitivity }
end
*ignoring_case_sensitivityについては過去記事参照
##参考