【发布时间】:2011-12-12 17:34:48
【问题描述】:
我有一个需要几分钟的背景部分的功能;它通过 API 在远程系统上设置状态。我想让它对随后的所有场景只执行一次,而不是对每个场景都执行一次。我的场景不会改变任何状态,它们是只读的,因此从一个场景到另一个场景应该没有副作用。
我没有使用 Rails,也没有本地数据库,所以无法处理数据库事务。
我目前正在考虑对 env.rb 中的 Before 做一些事情,并有一些基于标签的隐式约定/含义的条件代码,例如“@background-only-once”,可以让一些自定义代码跳过这些步骤,或者它可以在步骤定义中执行不同的逻辑 - 但尝试在执行之间共享它有点讨厌。
想法?
【问题讨论】:
-
当你说'让它对随后的所有场景只执行一次'时,这是否意味着同一个功能文件中的场景?是否必须重新调用您背景中的步骤(例如,如果其中一个出现在不同的功能文件中)?
-
a) 是的,我希望“背景”部分中的步骤只执行一次,然后再运行该功能中的任何场景。 b) 没关系;无论哪种方式都可以。
-
这是一个很好的问题,我很惊讶没有可接受的答案。我有完全相同的问题,并且徘徊什么是处理它的最佳方法。非常感谢任何建议/帮助。
-
我在 2013 年遇到了这个问题,并要求提供一些东西来满足这一需求(请参阅 groups.google.com/forum/#!topic/cukes/gTKZeUS_7dI)。显然,在 Cucumber 的一生中,它被多次请求和拒绝(尽管我在发布后不久就停止关注它)。