所以我有几个测试,我已经从步骤中重复使用了步骤。
但我现在在维修方面遇到了噩梦,因为我无法轻易地在两个步骤之间导航。
以下是一个例子:
[Given(@"I have an order")]
public void GivenIHaveAnOrder()
{
Given("an open store");
Given("I am an existing customer");
Given("I am on homepage");
When("I search for a component");
When("I add the component to my basket");
}
如何导航到其中一个内部步骤?
如果我想导航到"何时("我搜索组件");"第一步我不能。
如果我在功能文件中,我可以直接右键单击该步骤"转到定义"但我不能在这里这样做。有没有人有解决方案?
答案 0 :(得分:1)
我假设您使用Given / When-函数调用这些步骤,因为它们位于不同的绑定类中。我是对的吗?
有一种更好的方法,比使用这个功能。
您是否看过驱动程序概念和上下文注入? 看看这里:http://www.specflow.org/documentation/Context-Injection/
只需将您的步骤逻辑提取到驱动程序类,然后在不同的步骤类中从中获取实例:
class Driver
{
public void AnOpenStore()
{
...
}
}
[Binding]
public class StepClass1
{
private Driver _driver;
public StepClass1(Driver driver)
{
_driver = driver;
}
[Given(@"I have an order")]
public void IHaveAnOrder()
{
_driver.AnOpenStore();
}
}
[Binding]
public class StepClass2
{
private Driver _driver;
public StepClass2(Driver driver)
{
_driver = driver;
}
[Given(@"an open store")]
public void AnOpenStore()
{
_driver.AnOpenStore();
}
}
当您安排这样的步骤实施时,重复使用其他步骤会更容易。