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

PythonのBehave BDD フレームワークstep.nameでは、より単純なタイプのアクセサーを使用できますが、現在のステップをカウントし、インデックスを使用して生のステップ テキストから名前を見つけるという上記の手法が必要なため、より困難なタイプのアクセサーもあります。

于 2014-10-10T02:31:25.567 に答える