2011-07-11 28 views
5

(私は:)根本的に間違っているかもしれない)SpecFlow再利用シナリオ

私が書かれた一つの特徴を持っていますナビゲーションを検証する。

特集:ナビゲーション

I should be able to navigate to all the pages i'm authorized to 

シナリオ:移動は

Given I enter proper values in Foo 
When I enter Go 
Then I should be taken to Boo** 

をブーイングする。そして、私はブー

の運用面を検証します別のスペックを持っています機能:Booが正常に動作しているかどうかを確認してください。

ここで私は基本的にBoo画面に最初に移動する必要があります。 ナビゲーション

これが可能であるで書かブーイングに移動しシナリオ:私はシナリオを再利用することができれば、私は考えていましたか?そうでない場合は、その周りを回る最善の方法は何ですか?

/BB

答えて

5

あなたはここで2つのオプションがあります。

  1. を多くのシナリオに共通する手順を、共有しているクラスを作成します。あなたの場合、このクラスには「Booにナビゲートするとき」のステップが含まれています。これは他の機能でも利用できます。

  2. 正確に同じ名前/テキストで複数のステップを持つことができますが、ScopedStepBindingを使用して、そのステップの正しいバージョンが機能に対して呼び出されるようにすることができます。したがって、複数の機能ファイルに表示される「Booにナビゲートしたとき」を使用することはできますが、ステップスコープを使用すると、機能ファイルに対して実行されるコードを制御できます。

+0

ありがとうございました。かなり私が探していたもの! – Illuminati

+0

いいですね:)私は助けることができてうれしいです。 –

+3

"ステップを共有しているクラスを作成する" - >これはオプションではなく必須です。 SpecFlowでは、すべてのステップが共有されます。ステップクラスはステップコンテナのみですが、それらをカプセル化しません。したがって、機能(CheckoutFeatureSteps)ではなく、共通のアスペクト(ProductSteps、CustomerSteps、PaymentStepsなど)でクラス内のステップを整理する方がよいでしょう。なぜなら、そのステップは他のフィーチャにも利用できるからです。これはあなたの答えの妥当性を変えるものではありませんが、私はこの細目を知っていることがSpecFlowを使用している間に多くの助けになることを発見しました。 –