RSpecの出力は–format(もしくは-f)で指定可能です。

指定可能なフォーマットはprogress(デフォルト)、documentation、html、jsonの4種類が用意されています。

  • progress (もしくはp)
  • documentation (もしくはd)
  • html (もしくはh)
  • json (もしくはj)

progress (p)

デフォルトで指定されているフォーマットです。1つのテスト結果を1文字で表現します。
「.」 <成功> 「F」 <失敗> 「*」 <未実装>
表現がコンパクトなので大量のテスト結果を俯瞰するのに適しています。
数百個「.」が並ぶのを見るのは気持ちいいもんです。

documentation (d)

group (describe,context)やexample (it)に記述したコメントをテスト結果に表示します。

describe 'hello' do
  let(:s){ 'hello' }
  it "is hello" do
    expect(s).to eq('hello')
  end
  it "is 5 characters" do
    expect(s.length).to eq(5)
  end
end
hello
  is hello
  is 5 characters

テスト結果が文章として成り立つようにコメントを記入する事をお勧めします。

html (h)

テスト結果をHTML形式で表示します。
「どこで使うの??」と思ったのですが、実際見てみるとJavaScriptやCSSも組み込まれていて綺麗な出来栄えです。テスト結果のフィルタリング機能も付いています。

rspec_html

json (j)

JSON形式で出力します。結果を他のサーバに送る場合に便利ですね。
個々のテスト結果がexamples配列に、全体の集計結果はsummaryに出力されます。

{
  "examples": [
    {
      "description": "is hello",
      "full_description": "hello is hello",
      "status": "passed",
      "file_path": "./spec/simple_spec.rb",
      "line_number": 4,
      "run_time": 0.001557
    },
    {
      "description": "is 5 characters",
      "full_description": "hello is 5 characters",
      "status": "passed",
      "file_path": "./spec/simple_spec.rb",
      "line_number": 7,
      "run_time": 0.000121
    }
  ],
  "summary": {
    "duration": 0.002253,
    "example_count": 2,
    "failure_count": 0,
    "pending_count": 0
  },
  "summary_line": "2 examples, 0 failures"
}

省略表記

1文字で省略はどんどん使用しましょう、以下はすべて同じ

rspec spec --format documentation
rspec spec --format d
rspec spec -f d
rspec spec -fd

.rspecファイル

常に使用するオプションは.rspecファイルに記述することで以後指定を省くことができます。