私の仕事では、異なるチームが自社の自動化に使用できるコアのSpecFlowライブラリがあります。このライブラリにはいくつかの宣言されたステップがあります。SpecFlowでステップ宣言をオーバーライドしますか?
しかしWhen I click the button
、のは、私はまったく同じ文言を使用して自分自身のステップの宣言を定義したいとしましょう:
は例えば、ライブラリーは、このようなものを持っているかもしれません。それを上書きすることは可能ですか?
私の仕事では、異なるチームが自社の自動化に使用できるコアのSpecFlowライブラリがあります。このライブラリにはいくつかの宣言されたステップがあります。SpecFlowでステップ宣言をオーバーライドしますか?
しかしWhen I click the button
、のは、私はまったく同じ文言を使用して自分自身のステップの宣言を定義したいとしましょう:
は例えば、ライブラリーは、このようなものを持っているかもしれません。それを上書きすることは可能ですか?
@Grasshopperが書いたように、ステップ定義はグローバルです。
しかし、Scopesを使って上書きすることができます。
http://www.specflow.org/documentation/Scoped-Bindings/
この場合、すべてのシナリオでタグを指定することを忘れないでください。元のステップ定義が呼び出されます。
同じステップ定義ファイルまたは別のステップで同じ手順(ボタンをクリックしたとき)を2回実行すると、DuplicateStepExceptionが発生します。たとえあなたが与えられたアノテーションを使っていても。これは、ステップ定義がグローバルにロードされ、競合が発生するためです。
また、キュウリが許容できないというエラーをスローするため、ファイルを含むステップ定義やフックを拡張することはできません。したがって、継承によって振る舞いをオーバーライドすることはできません。
ライブラリコードを変更することが許可されている場合は、別のステップをすべて一緒に書き込むか、可能であれば既存のステップのパラメータとしてボタンを渡してロジックに入れます。
この手順を使用して失敗するシナリオは理解してデバッグするのが非常に難しいため、これを行うことは非常に悪い考えです。
一般的には、シナリオで汎用ライブラリの手順を使用することも良い考えではありません。シナリオには、一般的な手順や、HOWの記述が含まれているべきではありません。代わりに、ビジネスコンテキストに特有のステップを含める必要があります。これらは、実行されていることと実行されている理由を説明する必要があります。
ので、代わりの
When I click on sign in
And I fill in my email with ...
...
我々はそれをやっているかについて非常に単純で、すべて私たちが何をしているかについてである
When I sign in
より抽象的、および何も得ます。