Techioz Blog

Cucumber: Ruby でメソッドを完了するために使用される変数

概要

以下のメソッドで変数 var_name を使用するエレガントな方法はありますか。ステップの最初の文字列として使用される名前が var の最後に反映されるようにするためです。

Then('the {string} variable in the response should be {string}') do |var_name, value|
  var = Connection.session.**"#{var_name}"**
  raise "Expected #{var} to equal '#{value}', but was #{var}" unless var == value 
end

BR、 カミロ

解決策

実行時のみがわかるセレクターを使用してメッセージを送信するには、Object#public_send メソッドを使用できます。 public_send を使用すると、メッセージの名前を引数として渡すだけで、任意のメッセージをオブジェクトに送信できます。

Connection.session.public_send(var_name)