2016-08-11 10 views
1

SpecFlowシナリオがあり、可能な値の範囲を入力として指定したいとします。SpecFlow入力属性のパーサーを実装する方法

Scenario: Search completed successfully 
Given I am on the application screen 
    And I enter an number of AA191DD 
When I press the search button and wait till search will be completed 
Then I should see *AtLeastOne* number of cars available for given number 

実際、私はTimes構造体を実装しようとしています。 要件は次のように、いくつかの範囲を入力できるようにすることである。

  • AtLeastOnce
  • 正確なし
  • ({数})

現在の実装である:I番号列挙を有します。

public enum Number 
{ 
    AtLeastOnce, 
    None 
} 

Specflowバインドメソッドは、この列挙型を入力として受け取ります。

public void ThenIShouldSeeNumberOfCarsAvailable(Number numberEnum) 
{ 
} 

しかし、今私はNumbers.Exact(45)を実装する方法がわかりません。 提案がありますか?

答えて

1

私はあなたが少し複雑になっているように感じますが、努力して解決策を教えてくれると思います。

まず、私はおそらくインターフェイスと実装に行くだろうので、あなたは情報の余分なビット(比較する正確な数)を格納する必要があるので、あなたは列挙でそれを行うことはできないと思う。私はおそらくそれをINUMericComparisonまたは同様のものと呼ぶでしょう。それから、「少なくとも」、「なし」、「正確に」の実装があります。 3つの異なる型を作成する静的なファクトリメソッドを持つクラスのようなenumを実装します。次に、これらのタイプのいずれかにテキストを変換するステップにStepArgumentTransformationがあります。私は私の電話の中にいるので、コードは袖口から外れますが、このようなものです。

私は実際の実装を学生の練習として残します。

ステップ引数の変換はspecflowで正規表現をとることができるので、各ビットのテキストにマッチし、静的メソッドの1つだけを返すことができるようにする必要があります

関連する問題