我试图在运行测试时获取当前的功能名称或描述。这是在 Before 挂钩中完成的,例如
name = scenario.feature.name
或 name = scenario.feature.description
。然而,似乎 feature
甚至从旧版 API 中删除了,而且我找不到获取特征信息的新方法。是否仍然可以获得当前功能名称或描述或有关 Cucumber 2.4(Ruby gem)中该功能的任何其他信息?
这个不再出现在 Cucumber gem 2.4.0 中。
钩子现在将场景对象作为参数传递给它们的块:
Before do |scenario|
puts scenario.feature.name
puts scenario.name
end
这适用于
cucumber 2.4.0
及其依赖项 cucumber-core 1.5.0
。Before
和 After
钩子验证了它; BeforeStep
和 AfterStep
挂钩的工作方式不同。
请注意,
secenario.feature
是Cucumber::Core::Ast::Feature
(不再是Cucumber::Ast::Feature
;核心现在位于其自己的宝石中)。
before 钩子实际上并不产生场景对象,它产生一个包裹
Cucumber::RunningTestCase
的 Cucumber::Core::Test::Case
。我们可以使用 AstLookup
来解析场景描述,如下所示:
Before do |test_case|
puts test_case.name
puts scenario(test_case).description
end
def scenario(test_case)
# Cucumber doesn't provide direct access to the scenario so this hack is necessary
cucumber_config = ObjectSpace.each_object(Cucumber::Configuration).first
ast = Cucumber::Formatter::AstLookup.new(cucumber_config)
ast.scenario_source(test_case).scenario
end