1

私はこの状況を持っています:

[Given(@"I select cell (.+)")]
[When(@"I select cell (.+)")]
[Then(@"I select cell (.+)")]
public void WhenIClickOnExcelCellX(string cell)
{
     excelDriver.SelectCell(cell);
}

これら 3 つのキーワードのいずれかに一致するワイルドカード属性はありますか? このようなものを書きたいのですが、その属性にマッピングを提供したかどうかを心配する必要はありません。

[Any(@"I select cell (.+)")]
public void WhenIClickOnExcelCellX(string cell)
{
    excelDriver.SelectCell(cell);
}
4

2 に答える 2

5

実際にはそうではないと確信しており、これは設計によるものです。

少し時間をとって、何Givenを、WhenそしてThenステップが達成しようとしているのかを考えてみてください。これは次のことだと思います:

  • Given - は前提条件であるため、テスト対象のコードがどのようにその状態になるかはあまり気にせず、テストを実行できるように状態がそこにあるだけです。
  • いつ - テストできるように状態を変更するアクションの実行
  • 次に、何かが実際に正しい状態になったことを確認します

したがって、せいぜいWhen I select cell x、あなたの実装がかなり軽量であれば、それを に再利用できる (ただし、必ずしもそうすべきではない)Given I select cell xと考えるかもしれません。

ただし、Then I select cell x実際には有効ではありません。代わりに、実際には有効である必要がありますThen cell x should be selected

using Should;
[Then(@"cell (.+) should be selected")] //Regex might need changing
public void ThenCellXShouldBeSelected(string cell)
{
     excelDriver.IsSelected(cell).ShouldBeTrue(); //Or whatever the call is
}

お役に立てれば。

アップデート

https://github.com/techtalk/SpecFlow/blob/master/Runtime/Attributes.csのコードを見ると、基本クラスはあるもののStepDefinitionBaseAttribute抽象的であることがわかります。

于 2013-06-24T14:28:31.183 に答える
1

そのような場合に「StepDefinition」属性を使用します。ただし、それを使用することは、BDD の設計哲学を破っていることを意味します。

[StepDefinition(@"I select cell (.+)")]
public void WhenIClickOnExcelCellX(string cell)
{
    excelDriver.SelectCell(cell);
}
于 2014-08-05T09:46:28.867 に答える