さまざまなモジュール、実行中にいくつかの「プット」コマンドで何をしているかを詳述するクラスを呼び出すいくつかのルビーテストがあります。
これらのテストをコンソールで実行すると、コンソールに「puts」コマンドの出力が表示されますが、オプションを使用してテストを実行すると、次のようになります。
ruby --format html --output file.html
その情報はすべて失われます。HTML レポート内に単純な文字列メッセージを記録する方法はありますか?
さまざまなモジュール、実行中にいくつかの「プット」コマンドで何をしているかを詳述するクラスを呼び出すいくつかのルビーテストがあります。
これらのテストをコンソールで実行すると、コンソールに「puts」コマンドの出力が表示されますが、オプションを使用してテストを実行すると、次のようになります。
ruby --format html --output file.html
その情報はすべて失われます。HTML レポート内に単純な文字列メッセージを記録する方法はありますか?
各シナリオの Before フックで World を思い出すことができます:
# features/support/env.rb
Before do |scenario|
$world = self
end
次に、外部のサポートクラスとモジュールで puts を次のように使用できます。
$world.puts 'something'
また、Cucumber インスタンス変数を次のように取得/設定できます。
$world.instance_variable_get(:@user)
$world.instance_variable_set(:@user, user)
また、可視性を高めるために、これら 2 つのメソッドをヘルパーに抽出することも好みます。
module Helpers
def get_scenario_variable(symbol)
$world.instance_variable_get(symbol)
end
def set_scenario_variable(symbol, value)
$world.instance_variable_set(symbol, value)
end
end
次に、これらのメソッドが必要な場所にこのモジュールを含めることができます
次の手順を試しました。
When /^I do something$/ do
puts "Hello"
end
Then /^something happens$/ do
end
...次のコマンドを使用します。
cucumber -f html -o results.htm
...results.html
ブラウザでファイルを開くと、ステップを表示した直後に「Hello」メッセージが表示されました。puts
HTML 出力の関連セクションを添付したので、出力がそこにあることがわかります。
<!-- the first step -->
<li id='features_thing_feature_4' class='step passed'>
<div class="step_name">
<span class="keyword">When </span>
<span class="step val">I do something</span>
</div>
<div class="step_file">
<span>features/step_definitions/thing_steps.rb:1</span>
</div>
</li>
<!-- anything that the above step passed to `puts` -->
<li class="step message">Hello</li>
<!-- the second step -->
<li id='features_thing_feature_5' class='step passed'>
<div class="step_name">
<span class="keyword">Then </span>
<span class="step val">something happens</span>
</div>
<div class="step_file">
<span>features/step_definitions/thing_steps.rb:5</span>
</div>
</li>
これは、cucumber のputs
メソッドが呼び出されると (つまり、ステップ内から直接)、出力が html 出力に含まれることを示しています。ただし、puts
呼び出しが別の場所 (例: モジュール) からのものである場合は、含まれません。puts
呼び出しをモジュールからステップに移動することを検討できます。また、使用puts
は実際にはベストプラクティスではないため、完全に削除することを検討することをお勧めします...