メインコンテンツまでスキップ

カスタムフォーマッター

RSpecには汎用の出力フォーマッターが付属しています。--formatコマンドラインオプションを使用して、RSpecにどのフォーマッターを使用するかを指定できます。

しかし、RSpecの組み込みの出力フォーマッターでは必要なすべての機能を提供していない場合、独自のカスタムフォーマッターを作成し、それをRSpecに使用することができます。最も簡単な方法は、RSpecのBaseTextFormatterをサブクラス化し、変更したいメソッドだけをオーバーライドすることです。

カスタムフォーマッター

次の内容で「custom_formatter.rb」という名前のファイルがあるとします:

class CustomFormatter
# This registers the notifications this formatter supports, and tells
# us that this was written against the RSpec 3.x formatter API.
RSpec::Core::Formatters.register self, :example_started

def initialize(output)
@output = output
end

def example_started(notification)
@output << "example: " << notification.example.description
end
end

また、「example_spec.rb」という名前のファイルもあるとします:

RSpec.describe "my group" do
specify "my example" do
end
end

次のコマンドを実行すると:

rspec example_spec.rb --require ./custom_formatter.rb --format CustomFormatter

出力には「example: my example」というテキストが含まれているはずです。

また、終了ステータスは0であるはずです。