如何从calabash-cucumber中的AfterStep中提取步骤名称

时间:2014-10-08 05:57:30

标签: ruby cucumber calabash-ios

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

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

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

我可以看到该方案已传入,但如何访问当前正在运行的步骤?我在scenario docs内没有看到关于此的任何信息。

我认为该步骤将被传递到AfterStep钩子。有线索吗?

1 个答案:

答案 0 :(得分:1)

您可以参考this example code,它与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

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