Cucumber - Javascript 在其他步骤定义之前调用登录步骤定义

Cucumber - Javascript Invoke Login Step Definitions Before Other Step Definitions

使用 Chimp.js、Cucumberjs 和 WebdriverIO,我正在尝试 运行 在浏览器实例中登录步骤定义,然后再执行依赖于用户登录的其他步骤定义。并且可能无需为每个功能文件一遍又一遍地将它们添加到 Background 中。

这可能吗?我对 Wedbdriver.io 和 Cucumber 很陌生,任何建议都会很有帮助。如果需要更多信息,请告诉我。

我个人认为这不是个好主意。要登录某人,您必须指定 'who' 用户。稍后当您的应用程序变得更加复杂时,您可能会在不同用户之间进行交互。从场景中隐藏任何这些都不好。

您可以做的是在单个步骤中结合用户指定和登录,例如

Given I am logged in as an admin
Given Fred is logged in as a sales executive

等等

如果您对如何实现这些步骤很聪明,您可以通过从步骤定义中提取辅助方法并使用全局变量来存储人员,例如

Given 'I am logged in as an admin' do
  @i = create_user role: admin
  login as: admin, user: @i

并在其他登录步骤中重用这些方法。

如果你很好地组织你的功能,你可以在后台处理很多这样的调用,例如

Feature: Basic admin ops
  Background: 
    Given I am logged in as an admin

  Scenario: I can foo
    When I foo

  Scenario: I can bar
    When I bar

一些最后的想法......

每个场景都可以推动特定的开发。与做开发写作的工作相比 "Given I am logged in" 是微不足道的。

当出现问题时,知道您应该登录是一条重要信息。