9

例外がスローされたときに pry-rescue が pry を開始することを期待していた Cucumber 機能に Around フックを追加しました。

Around do |scenario, block|
  Pry::rescue do
    block.call
  end
end

Around フックは確実に呼び出されていますが、ステップ内でスローされた例外はレスキューされません。たとえば、このステップ:

When(/^I perform the action$/) do
  raise 'hell'
end

...機能が失敗する原因になりますが、コンソールでこじ開けることはありません。

Cucumber で pry-rescue を使用することは可能ですか? バグの可能性があるので、これも問題として提起しました。

更新:コメントの AdamT からの提案に従って、私は:

  • @allow-rescue意図的に壊れたステップを呼び出す機能にタグを追加しました
  • フックが呼び出されているputsことを確認するためのログを追加しましたAround

puts例外が発生したときに pry に入るにはまだ失敗していますが、Around フックに入っていることがステートメントからわかります。

4

3 に答える 3

1

Cucumber 2.4.0 のバージョンでは、#acceptメソッドが存在するCucumber::Formatter::LegacyApi::Ast::StepInvocationため、メソッドを再定義し、その中で必要なアクションを続行します。

Cucumber::Formatter::LegacyApi::Ast::StepInvocation.class_eval do
  alias_method :orig_accept, :accept

  def accept formatter
    orig_accept(formatter)
    if status == :failed
      formatter.runtime.support_code.ruby.current_world.instance_eval do
        # do something as if you are inside the cuke test step
        # like: expect(something).to be_something_else
      end
    end
  end
end
于 2016-11-07T13:25:57.103 に答える