我有一系列步骤,我希望能够在我的场景中从多个点调用,所以我用所有三个属性标记它们,如下所示:
[Given(@"I am logged in")]
[When(@"I am logged in")]
[Then(@"I am logged in")]
public void GivenIAmLoggedIn()
{
... some code ...
}
现在,我还没有 - 到目前为止 - 在这样做时看到了失败,但它是否安全?我是在做假设,还是应该创建这些方法的副本? (我认为引擎盖下的东西会在以后发生冲突......?)
答案 0 :(得分:1)
我已经这样做了两年,有数百个场景和步骤,只遇到了一个我不能直接与多个属性相关的问题(尽管如此)。有一个动作和一个断言作为相同的代码有点奇怪,就像这个例子,但我可以看到为什么你可能会使用它。我有一些看起来像这样:
[Given(@"I am a logged-in (.*) customer")]
[Given(@"I have successfully logged in")]
[Given(@"I am on the post login page")]
[When(@"I'm logged in")]
[Then(@"I can successfully log in")]
public void GivenIAmLoggedIn(string customer = 'normal')
{
--SomeCode
}
如果您的正则表达式完全相同,使用下划线方法名称https://specflow.org/documentation/step-definition-styles/可能更为优雅。