集中特征文件中的 specflow 数据?
Centralising specflow data from feature files?
Specflow数据可以通过使用表格在特征文件中用场景来表示。
如果你有很多场景,我想很难定位和更改数据。
是否有一种模式可以帮助用每个场景的数据填充特征文件?
即如何使用存储库来集中多个功能的数据?
看你是如何写这个问题的,你似乎是 Specflow 的新手。
问题在于 Specflow 不是一种编程语言。事实上,当您第一次开始查看它时,它的几个语言组件可能会妨碍您。
如果您正确地遵循 BDD 方法,那么编写功能文件的不是程序员。应该是商务人士,这就是语言如此开放的原因。只需几个占位符来提供功能和场景名称,然后在每行的开头使用一个简单的词来指示它是设置操作 (Given) 和操作 (When) 还是测试 (Then)。
例如,作为开发人员,我可能会想出以下示例。
Feature: Waking kids up for school
Scenario Outline: When its a school day
Given it is a <day>
When it is <time> for <child> to get up
Then <Mum> should wake me up
Examples:
|child |day|time |parent|
|daughter|mon|06:30|mum |
|son |mon|06:30|mum |
|daughter|tue|06:30|mum |
|son |tue|06:30|mum |
|daughter|wed|07:00|dad |
|son |wed|07:15|dad |
|daughter|thu|07:00|dad |
|son |thu|07:15|dad |
|daughter|fri|07:30|dad |
|son |fri|07:35|dad |
这个例子将我们(虚构的)家庭日常事务的所有复杂性都包含在不同的 parents 中,有利于一周中的不同时间和日期等等。
但另一方面我也可以写
Feature: Waking kids up for school
Scenario: When its a school day
Given it is a school day
When it is time to get up
Then my parent should wake me up
这可以捕获所有必要的内容,因为复杂性不需要反映在场景中(说真的,谁在乎我的孩子什么时候醒来,只要他们上学!)。
但是如果你需要复杂性,你可以在你的测试代码中定义它
[Binding]
public void GivenItIsASchoolDay()
{
ScenarioContext.Current["Day"]="Wed";
ScenarioContext.Current["Time"]="07:00";
ScenarioContext.Current["Parent"]="Mum";
}
不要忘记 Binding
是全局的,因此如果您构建代码使它们都在同一个地方,那么您最终会集中所有内容。
Specflow数据可以通过使用表格在特征文件中用场景来表示。
如果你有很多场景,我想很难定位和更改数据。
是否有一种模式可以帮助用每个场景的数据填充特征文件? 即如何使用存储库来集中多个功能的数据?
看你是如何写这个问题的,你似乎是 Specflow 的新手。
问题在于 Specflow 不是一种编程语言。事实上,当您第一次开始查看它时,它的几个语言组件可能会妨碍您。
如果您正确地遵循 BDD 方法,那么编写功能文件的不是程序员。应该是商务人士,这就是语言如此开放的原因。只需几个占位符来提供功能和场景名称,然后在每行的开头使用一个简单的词来指示它是设置操作 (Given) 和操作 (When) 还是测试 (Then)。
例如,作为开发人员,我可能会想出以下示例。
Feature: Waking kids up for school
Scenario Outline: When its a school day
Given it is a <day>
When it is <time> for <child> to get up
Then <Mum> should wake me up
Examples:
|child |day|time |parent|
|daughter|mon|06:30|mum |
|son |mon|06:30|mum |
|daughter|tue|06:30|mum |
|son |tue|06:30|mum |
|daughter|wed|07:00|dad |
|son |wed|07:15|dad |
|daughter|thu|07:00|dad |
|son |thu|07:15|dad |
|daughter|fri|07:30|dad |
|son |fri|07:35|dad |
这个例子将我们(虚构的)家庭日常事务的所有复杂性都包含在不同的 parents 中,有利于一周中的不同时间和日期等等。
但另一方面我也可以写
Feature: Waking kids up for school
Scenario: When its a school day
Given it is a school day
When it is time to get up
Then my parent should wake me up
这可以捕获所有必要的内容,因为复杂性不需要反映在场景中(说真的,谁在乎我的孩子什么时候醒来,只要他们上学!)。
但是如果你需要复杂性,你可以在你的测试代码中定义它
[Binding]
public void GivenItIsASchoolDay()
{
ScenarioContext.Current["Day"]="Wed";
ScenarioContext.Current["Time"]="07:00";
ScenarioContext.Current["Parent"]="Mum";
}
不要忘记 Binding
是全局的,因此如果您构建代码使它们都在同一个地方,那么您最终会集中所有内容。