環境
Ruby 3.0.2
Rails 6.1.4.1
ハッシュの検証
今まではハッシュのkeysとvaluesがそれぞれ期待する値で返っているかどうか一つ一つ検証していた。
model.rb
User.published_articles
# => { user.id => [article1, article2], user2.id => [article3] }
spec.rb
expect(User.published_articles.class).to eq Hash
expect(User.published_articles.keys[0]).to eq user.id
expect(User.published_articles.values[0][0]).to eq article1
expect(User.published_articles.values[0][1]).to eq article2
expect(User.published_articles.keys[1]).to eq user2.id
expect(User.published_articles.values[1][0]).to eq article3
ハッシュの形のままeqで比較すれば良い
spec.rb
expect(User.published_articles).to eq(
{ user.id => [article1, article2], user2.id => [article3] }
)
ハッシュはハッシュは==
で比較するときに要素の順序は考慮しないため
順番が入れ替わってもテストは成功する。
spec.rb
expect(User.published_articles).to eq(
{ user2.id => [article3], user.id => [article1, article2] }
)
参考