1

キュウリのGiven/When / Thenステートメントから直接出力を印刷すると、きれいな青いテキストで印刷されますが、他の関数を呼び出してその中で印刷すると、赤で印刷されます(インデントされません)。

サンプル機能:

Feature: Foo
  Scenario: Foo2
    Given something
    Then something else

サンプルstep_def:

Given /^something$/ do
  puts "Pretty blue"
end

class AnyClass
  def doSomething
    puts "Scary red"
  end
end

Then /^something else$/ do
  AnyClass.new.doSomething
end

以下の出力例では、「Scary red」は赤で、インデントされておらず、実際にはキュウリのステップの前に印刷されています(「Then」句)。「プリティブルー」は青で、適切にインデントされ、キュウリのステップの後に出力されます。

Feature: Foo

  Scenario: Foo2
    Given something
      Pretty blue
Scary red
    Then something else

1 scenario (1 passed)
2 steps (2 passed)
0m0.001s

私はRubyとキュウリを初めて使用するので、これらがこの質問に適切なタグであるとは確信していません。他のクラス内で呼び出されたメソッドからの出力をきれいなフォーマットと一致させる方法はありますか?

編集:いくつかの検索では、ステップ内からのプットは、他の関数からのプット(他のフォーマッターから除外される)とは異なる方法で処理されることが示されています(別の方法でフォーマットすると、それらが含まれます)。おそらく問題は、Rubyがステップからのプットをどのようにインターセプトするかということです。そのとき、彼らはステップのクラスの一部である独自のプットを実装しているのではないかと思います。

4

1 に答える 1

0

きゅうりのステップの文法を書くとき、きゅうりは色付けされてバッファリングされる(文法)プットを上書きしました。色は、ステップが通過するかどうかによって異なります。バッファリングは、すべてが実行されるまで出力に色を付けないために発生します(したがって、印刷する色がわかります)。

文法ステップ内から自分自身を渡し、そのオブジェクトが置くことを呼び出すと、私が求めていた動作が得られます。

赤は私のデフォルトのフォントの色の副作用でした。

すなわち:

After /Some Condition/ do
   some_object.test_something(self)
end

class SomeObject
   def test_something(obj)
      obj.puts "SomeText"
   end
end
于 2013-03-25T19:00:35.533 に答える