Given/When/Then-我可以使用Given“;语句“;在不止一个操作中,说Given和When都是
本文关键字:Given When 操作 一个 都是 不止 可以使 我可以 Then- 语句 | 更新日期: 2023-09-27 18:29:05
假设我得到了带有给定步骤的BDD特征文件,比如
Given User is logged in as administrator
When some functionality line
Then some functionality line
我想在其他场景中使用"用户以管理员身份登录"作为When语句,我该如何做到这一点。。
我试着写作,
[Given,When(@"User is logged in as administrator")]
public void abc(){
//my operation
}
specflow允许我使用(cntrl+空格键)以这种方式进行编写,但如果我尝试导航,它只会导航到"当用户以管理员身份登录时"
它只导航到你写的最后一个值[Given,When("..")]。在这里,它导航到When。。
我如何使它对两种语句都有效,因为在某些情况下,
管理员已登录声明是一个前提条件,但在某些情况下,
我必须登录,这是我需要执行的操作,因此也需要编写与"When"语句相同的语句
有什么方法可以让我使用与Given和When相同的语句吗??
提前感谢
首先,我想检查一下您是否真的需要"When"。
如果您实际上并没有编写自定义登录功能,请考虑完全删除"何时"场景。登录,一旦编写,很少会更改,而且很容易与其他功能分离。手动测试,然后将其单独放置。不过,可以使用该功能为其他场景设置登录帐户。
如果你使用登录步骤作为更大的、有多个When的东西的一部分,你可能想找到一种方法将你试图做的事情表述为一个步骤,并在其中调用登录步骤。一般情况下,场景只有一个When。
如果两者都不适用,那么,好吧,你需要一个用户主动登录的场景。登录的行为很有趣,你想提供一个例子。
从语言学的角度来看,我不想看到"给定"answers"何时"的措辞相同。
Given的理念是,你如何到达那里并不重要。这种行为对于场景来说并不重要。该步骤描述了一个存在的上下文。用户已登录。他们是如何登录的?谁知道呢?谁在乎?这并不重要。
不过,对于"何时",操作是活动的。某人或某物正在执行某项活动。用户登录。
所以,我更喜欢看这个:
[Given(@"User is logged in as an adminstrator")]
[When(@"User logs in as administrator")]
public void abc(){
//my operation
}
以及与之匹配的步骤。这仍然可以让您暂时重用您的功能,但也可以让您稍后选择将它们分离。例如,如果登录是一个昂贵的步骤,并且您决定在所有仅为Given的情况下重用已登录帐户,那么这一点可能很重要。
更多关于英语时态和BDD的信息。