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

--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' を実行する_とき_

すべての例が合格する必要があります。

正規表現に一致するもののみを一致させる

rspec . --example-matches "first$" --format d を実行する_とき_

すべての例が合格する必要があります。

かつ、出力には次のすべてが含まれている必要があります:

| first |

かつ、出力には次のいずれも含まれていてはいけません:

| first example in first group | | second example in first group | | first example in second group | | second example in second group | | first example in third group | | nested group first example in nested group | | nested group second example in nested group |

単語の境界を持つ正規表現に一致するもののみを一致させる

rspec . --example-matches "nested[^_]" --format d を実行する_とき_

すべての例が合格する必要があります。

かつ、出力には次のすべてが含まれている必要があります:

| first example in nested group | | second example in nested group |

かつ、出力には次のいずれも含まれていてはいけません:

| first example in first group | | second example in first group | | first example in second group | | second example in second group | | first example in third group | | third example in nested_group |

例名オプションの複数の適用

rspec . --example-matches 'first group' --example-matches 'second group' --format d を実行する_とき_

すべての例が合格する必要があります。

かつ、出力には次のすべてが含まれている必要があります:

| first example in first group | | second example in first group | | first example in second group | | second example in second group |

And 出力には、次のいずれかの内容も含まれていてはいけません:

| 第3グループの最初の例 | | ネストされたグループの最初の例 | | ネストされたグループの2番目の例 |