【问题标题】:Behat using BeforeScenario vs GivenBehat 使用 BeforeScenario 与 Given
【发布时间】:2017-05-12 04:46:23
【问题描述】:

对于确实需要在每个场景之前设置的内容,则使用 BeforeScenario。

有时有些东西只需要针对某些场景进行设置,但其中很大一部分需要设置。例如,如果场景需要一个“普通用户帐户”存在,那么它会继续以该用户身份登录并做一些事情。

您可以创建一个@BeforeScenario @RegularUser 方法,该方法将为标记为@RegularUser 的每个场景运行。所以场景最终看起来像:

@RegularUser
Scenario login as a regular user
  Given I am on the login page
  When I login to a regular user account
  Then the welcome screen is displayed

替代方法是

Scenario login as a regular user
  Given a regular user exists
  And I am on the login page
  When I login to a regular user account
  Then the welcome screen is displayed

“一个普通用户存在”将与创建普通用户的方法相关联。

使用第一种方法,我可以使 @AfterScenario @RegularUser 在场景结束后删除用户。所以这似乎是“一件好事”。

但是从 BDD 的角度来看,第二种方法对我来说看起来更好。但它的局限性在于,在场景结束时不会发生任何事情来删除用户。

哪种方法更好?

【问题讨论】:

    标签: behat mink


    【解决方案1】:

    在我看来,我会选择第一个选项。

    问题是,这两个选项都不是很好,因为通常你已经添加了这个场景的上下文:

    In order to ..
    As a Regular User 
    I need to ..
    

    这应该表明您运行此场景的意图是什么。创建 RegularUser 的过程不会为场景本身增加价值。

    然后,如果您需要在拥有普通用户的情况下进行确认 - 那么就可以了。但在我看来,这不是重点——那么第二个选项不太好——我们有上下文可以添加这样的信息。

    这就是为什么,我认为第一个选项(不理想,但比第二个更好)是很好的解决方案。

    我不知道在 Behat 功能中按上下文设置用户,但标签选项应该更有弹性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-09
      • 1970-01-01
      相关资源
      最近更新 更多