你有可能会注意到,Specflow中的StepDefinition是“全局的”。就是说,写好的一个步骤定义,可以在多个Scenario甚至是多个Feature文件中编写Step来使用该步骤定义。
试想有这样的需求,有一句Step,模拟手机拨号
Given I have dialed number 132098
相应地,有StepDefinition
[Given(@"I have dialed number (.*)")]
public void GivenIHaveDialedNumber(string number)
{
}
如果这个Step要求在某些地区都要工作,例如在港澳台
// in Hongkong
[Given(@"I have dialed number (.*)")]
public void GivenIHaveDialedNumber(string number)
{
string actualNumber = "852" + number;
// dial with actualNumber
}
而StepDefinition是全局的,意味着,上面两个步骤定义是不能同时存在的(即使他们在不同的StepDefinition.cs文件),因为这会导致在执行Given语句的时候,Specflow发现了步骤的两个定义都可以匹