4

私の受け入れテスト (RSpec/Capybara) には、すべて単一のit...doブロックの下にいくつかの長い一連のステップがあり、RSpec ドキュメント出力に各ステップの追加ドキュメントを手動で追加したいと考えています。

したがって、RSpec の出力 (ドキュメント形式) は現在次のようになっています。

FooController
  New user creates account and creates profile
    it passes

一連の長い手順の中で、いくつかの追加情報を出力にプッシュしたいと思います。

FooController
  New user creates account and creates profile
    ... new user saw signup page!
    ... new user got email confirmation!
    ... confirmation link worked!
    ... new user saw empty profile!
    ... new user filled in profile
    it passes

アプリを文書化するという点では、これらの余分なステートメントは、単一の「合格」結果メッセージを含む大きなブラック ボックスよりも優れています。

複数のブロックを使用して受け入れテストの長い一連のステップを構築する方法は明らかにないit...doため、追加のメッセージを RSpec 出力ストリームにプッシュする簡単な方法があることを願っています。 /green) あたかもパットまたは個別it...doの例であるかのように。

4

2 に答える 2

0

これが私がやったことです...私の仕様に nextstep("message") メソッドを追加しました。このメソッドは、awesome_print gem を使用して「メッセージ」をコンソールに出力するため、色を付けたり、ロガーにも出力したりできます。

  def nextstep(txt)
    $step += 1
    @speclog.debug ''
    @speclog.debug ''
    @speclog.debug "#{$scene}, step: #{$step}: " + txt
    ap (' ' * ($indent * 2 - 1)) + "step: #{$step}: " + txt, {:color => {:string => :blueish}}
  end

少しハックですが、rspec を実行すると非常にわかりやすい出力が得られます。

it "New user creates account and creates profile" do
   # some assertions
   nextstep "... new user saw signup page!"
   # some assertions
   nextstep " ... new user got email confirmation!"
   # some assertions
   nextstep " ... confirmation link worked!"
   # some assertions
   nextstep "... new user saw empty profile!"
   # some assertions
   nextstep "... new user filled in profile"
end

質問に示されているように、より説明的なスペック出力が得られます (失敗した場合は、実行していたステップが表示されます)。

   step 1: ... new user saw signup page!
   step 2: ... new user got email confirmation!
   step 3: ... confirmation link worked!
   step 4: ... new user saw empty profile!
   step 5: ... new user filled in profile"
于 2013-01-19T01:46:19.693 に答える