5

我有一个需要几分钟的背景部分的功能;它通过 API 在远程系统上设置状态。我想让它对随后的所有场景只执行一次,而不是对每个场景都执行一次。我的场景不会改变任何状态,它们是只读的,所以从一个场景到另一个场景应该没有副作用。

我没有使用 Rails,也没有本地数据库,因此无法处理数据库事务。

我目前正在考虑对 env.rb 中的 Before 做一些事情,并有一些基于隐式约定/标签含义的条件代码,例如“@background-only-once”,可以使一些自定义代码跳过这些步骤,或者它可以在步骤定义中执行不同的逻辑——但是尝试在执行之间共享它有点讨厌。

想法?

4

2 回答 2

2

这并不能真正解决它,但这就是我在这种情况下所做的。

我去一个场景,只是在评论中标记不同的“场景”。如果您只是将附加的场景标题注释掉,就会发生这种情况。

这是注释掉第二个场景的示例,并在第一个功能结束时运行测试状态

Feature: Admin can manage organizations
  In order to ...

Scenario: can add
  When I log into the admin
  When I follow "Organizations"
  When I follow "Add"

  When I fill in "Email" with "red@cross.com"
  When I fill in "Name" with "Red Cross"
  When I press "Save"
  Then I should see "success"

# Scenario: can edit
  When I follow "Red Cross"
  When I fill in "Name" with "Green Cross"
  When I press "Update"

  Then I should see "success"
于 2011-12-13T14:26:10.347 回答
0

如果您不想为每个场景执行您的背景,那么它就不是背景,是吗?

如果每次运行 Cucumber 场景时都调用远程服务,请不要这样做相反,请使用http://marnen.github.io/webmock-presentation/webmock.html中所述的 Webmock 和 VCR 。您的测试将更快、更准确。

于 2013-08-05T20:33:02.473 回答