特定の のすべてのパラメータを 1 行で指定するのと、各パラメータを別の行で指定するのとではどちらがよいでしょうか? つまり、どちらが良いですか?
パラメータごとに And を分離
Scenario: some random scenario
Given a menu with a menu width of 19
And quit text of "quit"
And Fruit options of
|Text|
|some text|
When ...
Then ...
または特定のギブンのすべてのパラメーターを 1 行に
Scenario: Some scenario
Given a menu with quit text of "quit" and menu width of 19 and Fruit options of
|Text|
|Some text|
When ...
Then ...
これは、クラスの書き方に影響を与えるだけでなく、バインディングの書き方に次のような影響を与えるように見えます (そして、私が間違っていることを願っています)。つまり、最初のオプション (パラメーターごとに別々の AND ) オブジェクトの作成後にクラスにパブリック プロパティが 1 つずつ設定されている場合、バインディングは簡単に記述できます...
private Menu _menu;
[Given(@"a menu of fruit options")]
public void GivenAMenuOfFruitOptions(Table table)
{
string[] fruitOptions = table.GetColumn("Fruit");
_menu = new Menu(fruitOptions,null);
}
[Given(@"a menu width of (.*)")]
public void GivenAMenuWidthOf(string width)
{
_menu.Width = int.Parse(width);
}
[Given(@"a Quite text of ""(.*)""")]
public void GivenAMenuWidthOf(string quitText)
{
_menu.QuitText = quitText;
}
一方、オプション 2 (すべて 1 行) では、すべてのパラメーターをコンストラクターの引数として受け取るコンストラクターを持つオブジェクトを作成する方が簡単です。
private Menu _menu;
[Given(@"a menu with quit text of ""(.*)"" and menu width of (\d+) and Fruit options of ")]
public void GivenAMenuOfFruitOptions(string quitText, int width, Table table)
{
string[] fruitOptions = table.GetColumn("Fruit");
_menu = new Menu(fruitOptions,width, quitText);
}
specflow の実装は、私が書くコードに影響を与えるべきではないので、何かが欠けているように感じます。また、上記の #1 が過度にステートフルなオブジェクトを助長するのではないかと心配しています。私は機能的な無国籍中毒者です。
どんなポインタでも最も役に立ちます。
事前にtxs、
乾杯、アラン