メインコンテンツまでスキップ

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" を含むことが期待されます |