all
マッチャー
all
マッチャーを使用して、コレクションのすべてのオブジェクトが期待するマッチャーをパスすることを指定します。これは、列挙可能なオブジェクトに対して動作します。
(expect([1, 3, 5]).to all( be_odd )
expect([1, 3, 5]).to all( be_an(Integer) )
expect([1, 3, 5]).to all( be < 10 )
expect([1, 3, 4]).to all( be_odd ) # fails
このマッチャーは、複合マッチャーもサポートしています。
expect([1, 3, 5]).to all( be_odd.and be < 10 )
expect([1, 4, 21]).to all( be_odd.or be < 10 )
コレクションの中で期待する条件を満たす「任意の」メンバーを探している場合は、include
マッチャーを参照してください。
配列の使用方法
次の内容で "array_all_matcher_spec.rb" という名前のファイルがあるとします:
RSpec.describe [1, 3, 5] do
it { is_expected.to all( be_odd ) }
it { is_expected.to all( be_an(Integer) ) }
it { is_expected.to all( be < 10 ) }
# deliberate failures
it { is_expected.to all( be_even ) }
it { is_expected.to all( be_a(String) ) }
it { is_expected.to all( be > 2 ) }
end
rspec array_all_matcher_spec.rb
を実行すると、
出力には次のすべてが含まれている必要があります:
| 6 つの例、3 つの失敗 | | [1, 3, 5] がすべて偶数であることが期待されます | | [1, 3, 5] がすべて String の一種であることが期待されます | | [1, 3, 5] がすべて 2 より大きいことが期待されます |
複合マッチャーの使用方法
次の内容で "compound_all_matcher_spec.rb" という名前のファイルがあるとします:
RSpec.describe ['anything', 'everything', 'something'] do
it { is_expected.to all( be_a(String).and include("thing") ) }
it { is_expected.to all( be_a(String).and end_with("g") ) }
it { is_expected.to all( start_with("s").or include("y") ) }
# deliberate failures
it { is_expected.to all( include("foo").and include("bar") ) }
it { is_expected.to all( be_a(String).and start_with("a") ) }
it { is_expected.to all( start_with("a").or include("z") ) }
end
rspec compound_all_matcher_spec.rb
を実行すると、
出力には次のすべてが含まれている必要があります:
| 6 つの例、3 つの失敗 | | ["anything", "everything", "something"] がすべて "foo" と "bar" を含むことが期待されます | | ["anything", "everything", "something"] がすべて String の一種であり、"a" で始まることが期待されます | | ["anything", "everything", "something"] がすべて "a" で始まるか "z" を含むことが期待されます |