RSpec の have_attributes マッチャ
RSpec の have_attributes
マッチャは『オブジェクトの属性(プロパティ)を検証する』マッチャになります。
例えば、
it { expect(10.to_s).to eq("10") } it { expect(10.positive?).to eq(true) }
というようなテストが
# メソッド名と戻り値の Hash を渡す it { expect(10).to have_attributes(to_s: "10", positive?: true) }
という風に書くことが出来ます。
[subject と組み合わせる]
subject
と is_expected
を使用して、subject
対象のプロパティのテストを行ないたい場合、
subject { 10 } it { expect(subject.to_s).to eq("10") } # こういう風に書くことは出来ない # it { is_expected.to_s.to eq("10") }
のように is_expected
を使用することは出来ません。
このような場合に have_attributes
マッチャを利用することが出来ます。
it { is_expected.to have_attributes(to_s: "10") }
べんり。
[参照]
https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers/have-attributes-matcher