--example-matches
オプション
--example-matches
(または -E
) オプションを使用して、正規表現を使って名前で例をフィルタリングします。
引数は、例の完全な説明と一致します。これは、グループの説明(ネストされ たグループを含む)と例の説明を連結したものです。
これにより、一意の名前を持つ単一の例、類似した名前を持つすべての例、一意の名前を持つグループのすべての例などを実行できます。
また、複数の例に一致するようにオプションを複数回使用することもできます。
注意: one-liner syntax を使用する場合、生成された説明を持たない例は、このオプションで直接フィルタリングすることはできません。なぜなら、説明を生成するために例を実行する必要があり、まだ生成されていない説明を使用して例を実行するかどうかを決定することができないためです。もちろん、グループの説明の一部を渡すことで、グループで定義されたすべての例(説明のない例も含む)を選択することができます。
背景
以下の内容で "first_spec.rb" という名前のファイルがあるとします:
RSpec.describe "first group" do
it "first" do; end
it "first example in first group" do; end
it "second example in first group" do; end
end
以下の内容で "second_spec.rb" という名前のファイルがあるとします:
RSpec.describe "second group" do
it "first example in second group" do; end
it "second example in second group" do; end
end
以下の内容で "third_spec.rb" という名前のファイルがあるとします:
RSpec.describe "third group" do
it "first example in third group" do; end
context "group of nest" do
it "first example in nested group" do; end
it "second example in nested group" do; end
it "third example in nested_group with underscore" do; end
end
end
以下の内容で "fourth_spec.rb" という名前のファイルがあるとします:
RSpec.describe Array do
describe "#length" do
it "is the number of items" do
expect(Array.new([1,2,3]).length).to eq 3
end
end
end
一致しない場合
rspec . --example-matches nothing_like_this
を実行すると、
例が実行されなかったとしても、プロセスは成功するはずです。
1つの単語に一致する場合
rspec . --example-matches example
を実行すると、
すべての例がパスするはずです。
各コンテキストで1つの一致
rspec . --example-matches 'first example'
を実行すると、
すべての例がパスするはずです。
1つのファイルで1つの一致(例の名前のみを使用)
rspec . --example-matches 'first example in first group'
を実行すると、
すべての例がパスするはずです。
1つのファイルで1つの一致(例の名前とグループ名を使用)
rspec . --example-matches 'first group first example in first group'
を実行すると、
その後、すべての例が合格する必要があります。
すべての例を1つのグループにまとめる場合
rspec . --example-matches 'first group'
を実行する_とき_
すべての例が合格する必要があります。
グループ名を指定して1つのファイルで一致する場合
rspec . --example-matches 'second group first example'
を実行する_とき_
すべての例が合格する必要があります。
ネストされたグループの例を含む1つのグループのすべての例
rspec . --example-matches 'third group'
を実行する_とき_
すべての例が合格する必要があります。
ClassName#method_name
形式を使用した一致
rspec . --example-matches 'Array#length'
を実行する_とき_
すべての例が合格する必要があります。