黄瓜同一句话不同场景

时间:2018-10-04 02:48:17

标签: cucumber cucumber-jvm cucumber-java cucumber-junit

我正在使用Java Spring Boot 2应用程序,在该应用程序上我使用了黄瓜和嫩黄瓜。

我不理解如何处理同一句子代表不同动作的情况。

给出以下句子

And the user fills the field email with 'myEmail@email.com'

问题在于“电子邮件”字段位于注册页面和登录页面中。

当我编写这句话的实现时,如何理解我是否需要填写登录页面或登录页面?

在google上搜索时,我什么都没找到,也许我的句子中有一些反模式?

为了更好地理解,有一些真实的例子吗?

谢谢

2 个答案:

答案 0 :(得分:2)

怎么了,

FileID

答案 1 :(得分:1)

反模式是您使用功能/场景来描述您的工作方式,而不是使用功能/场景来描述您正在做的事情及其重要性。您可以将如何执行操作的细节放入步骤定义的主体中,或者更好地放入步骤定义可以调用的辅助方法中。

在您的示例中,您显然有两种情况

  • 用户注册(我更喜欢在这里使用“注册”)
  • 用户登录

所以

Scenario: Sign up
  When I sign up
  Then I should be signed up

Scenario: Sign in
  When I sign in
  Then I should be signed in

然后在堆栈中找到一些辅助方法(我的方法在Ruby中)

def sign_up(new_user: )
  visit sign_up_page
  fill_in :email, with new_user.email
  fill_in :password, with new_user.password
  fill_in :confirmation, with new_user.password
  ...
  submit_form
end

def sign_in(user: )
  visit sign_in_page
  fill_in :email, with user.email
  fill_in :password, with user.password
  submit_form
end

通过这种方式,您可以清楚地区分sign_in和sign_up,并且不可能使用错误的步骤定义。