Ruby 如果失败,如何在通过后获得下一步

Ruby 如果失败,如何在通过后获得下一步,ruby,cucumber,watir,Ruby,Cucumber,Watir,我有AfterStephook,它可以给我一个步骤名。但它只给出了通过的步骤的名称 AfterStep do |result, step| puts step.name end 如果下一步失败,如何在通过后获得下一步? 或者如何获取失败步骤的名称 也许可以算出一步的位置,再做一步 有什么想法吗? 我确信这是可能的,因为我们可以在错误日志中看到失败的步骤名称。 找到了。我们可以使用scenario.exception.backtrace 它将返回一个带有步骤名称的数组。然后从数组中获取所需元

我有
AfterStep
hook,它可以给我一个步骤名。但它只给出了通过的步骤的名称

AfterStep do |result, step|
  puts step.name
end
如果下一步失败,如何在通过后获得下一步? 或者如何获取失败步骤的名称

也许可以算出一步的位置,再做一步

有什么想法吗? 我确信这是可能的,因为我们可以在错误日志中看到失败的步骤名称。
找到了。我们可以使用
scenario.exception.backtrace
它将返回一个带有步骤名称的数组。然后从数组中获取所需元素。
但是,可能还有其他原因会导致失败的步骤?

根本不调用
AfterStep
的原因很简单:它被视为一个简单的步骤,并被列在步骤列表中。因此,只要任何一个步骤失败,
场景
就会停止,并且永远不会调用
AfterStep
。我认为它是黄瓜Ruby < /Cube >中的一个bug。 作为一种解决方法,可以在
之后使用
钩子:

After do |scenario|
  if scenario.failed?
    puts "Failed: " << scenario.marshal_dump[2].first.source.inspect
  end
end
在do |场景之后|
如果scenario.0失败了?
放置“失败”: