1

我在 calabash-ios/cucumber 中使用 AfterStep 钩子。

我想知道我的钩子中最后执行的步骤。

AfterStep do |scenario|
  puts "Step: #{scenario.name} #{scenario.title} #{scenario.gherkin_statement}"                                                                   
end

我可以看到场景已经传入,但是如何访问当前正在运行的步骤呢?我在场景文档中没有看到任何关于此的信息。

我会假设该步骤将被传递到AfterStep钩子中。有什么线索吗?

4

1 回答 1

1

您可以参考这个示例代码,它与 AfterStep 挂钩中的步骤索引一起使用。

例子:

CALABASH_COUNT = {:step_index => 0, :step_line => nil}

#TODO change this approach as it breaks scenario outlines
Before do |scenario|
  begin
    CALABASH_COUNT[:step_index] = 0
    CALABASH_COUNT[:step_line] = scenario.raw_steps[CALABASH_COUNT[:step_index]].line
  rescue Exception => e
    puts "#{Time.now} - Exception:#{e}"
  end
end

AfterStep do |scenario|
  CALABASH_COUNT[:step_index] = CALABASH_COUNT[:step_index] + 1
  raw = scenario.raw_steps[CALABASH_COUNT[:step_index]]
  CALABASH_COUNT[:step_line] = raw.line unless raw.nil?
end

Behave BDD 框架,在 Python 中允许更简单的step.name类型访问器,但其他似乎更困难,需要上述技术来计算当前步骤,然后使用索引从原始步骤文本中查找名称。

于 2014-10-10T02:31:25.567 回答