【发布时间】:2017-07-06 21:10:06
【问题描述】:
我有AfterStep 钩子,它可以给我一个步骤名称。但它只给出通过步骤的名称。
AfterStep do |result, step|
puts step.name
end
如果下一个失败,如何在通过后获得下一个黄瓜步骤? 或者如何获取失败步骤的名称?
也许以某种方式计算步位置并采取另一个?
【问题讨论】:
我有AfterStep 钩子,它可以给我一个步骤名称。但它只给出通过步骤的名称。
AfterStep do |result, step|
puts step.name
end
如果下一个失败,如何在通过后获得下一个黄瓜步骤? 或者如何获取失败步骤的名称?
也许以某种方式计算步位置并采取另一个?
【问题讨论】:
找到了。我们可以使用scenario.exception.backtrace
它将返回一个带有步骤名称的数组。然后从数组中获取需要的元素。
但是,也许还有其他东西可以解决这个失败的步骤?
【讨论】:
根本不调用AfterStep 的原因很简单:它被视为一个简单的步骤,并且在步骤列表中是just appended。因此,一旦任何步骤失败,scenario 就会停止,AfterStep 永远不会被调用。我认为这是cucumber-ruby 中的一个错误。
作为一种解决方法,可以使用After hook:
After do |scenario|
if scenario.failed?
puts "Failed: " << scenario.marshal_dump[2].first.source.inspect
end
end
【讨论】: