1

キュウリでは、このようなものがありました

@do_this
@de @fr @it @us
Scenario: Do something irrelevant
Given ...
When ...
Then

@do_that
@de @fr @it @us
Scenario: Do a different irrelevant thing
Given ...
When ...
Then

のようなことが可能だったcucumber -t @de -t @do_thisので、両方のタグに一致するシナリオのみが実行されました。ただし、Rspecでは同じ動作が得られないようです。上記の例では、2 番目のシナリオにも@deタグがありますが、最初のシナリオのみが実行されます。

背景: 私は多くの国で展開されているプラ​​ットフォームを持っていますが、すべての機能がすべての国で利用できるわけではありません。そのため、シナリオに適切なタグを付けて、コマンド ラインから個々のシナリオを呼び出すことができたのは良いことでした。私は現在、いくつかの理由で Cucumber から Rspec に切り替える過程にありますが、現時点で私を妨げているのはこれだけです。もちろん、これにアプローチする方法に関する他の提案も受け付けています。

短いバージョン: 2 つ以上のタグに一致する Rspec の個々のテストを呼び出したいと思います。

4

1 に答える 1

4

RSpec タグの式は、含める場合は OR、除外する場合は AND のみであるため、一般的にはやりたいことができません。さらに、例の説明に対してタグ フィルターまたはフィルターのいずれかを使用できますが、両方を使用することはできないようです。そのため、これら 2 つの手法を組み合わせることもアウトであると思います。(おそらく、誰かがこれについて私を修正できます)。

ただし、あなたの例が示唆する限定的/構造化された状況がある場合は、次のことができると思います:

  • 言語ごとにブール値タグを定義し、従来の包含フィルターを使用します
  • 、などdoの値を持つタグを定義し、必要な値以外をすべて除外する除外フィルターを使用します。thisthatlambda

上記を実行すると、必要な言語と必要な値のサブセットを含む例を指定できるようdoなります

ただし、コマンドラインで式の形式を指定する方法があるとはlambda思えないため、構成オプションのアプローチの使用に限定されていると思います。いずれにせよ、基礎となる機能の説明についてはhttp://rubydoc.info/github/rspec/rspec-core/RSpec/Core/Configuration:filter_run_exceptを参照してください。

それは多くの制限です、私は知っています。これは、RSpec をかなり簡単に拡張できる領域のように思われるので、おそらく将来的に拡張が見られるでしょう。

于 2013-09-26T15:46:16.177 に答える