Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

RSpec | rspec-core metadata

概要

rspec-core shared metadata

詳細

metadata

RSpecのexample.metadataはメタデータをハッシュで保持している。

described_class

described_classでdescribeのクラスを取得可能。
shared_examlesなどを作成する際に、
処理対象のクラス名称を問わずに利用できます。

サンプルコード(プロダクトコード)
# encoding: utf-8

class Hoge
  def hoge1
    "hoge"
  end

  def hoge2
    "hoge"
  end

  def hige1
    "hige"
  end

  def hige2
    "hige"
  end
end
サンプルコード(テストコード)
# encoding: utf-8
require "spec_helper"
require "hoge"
require "pp"

describe Hoge do
  it do
    puts example.class
    puts example.metadata.class
    pp example.metadata.keys
    pp example.metadata[:example_group][:description_args]
    puts described_class
  end
end

出力

$ rspec
Run options: include {:focus=>true}

All examples were filtered out; ignoring {:focus=>true}
RSpec::Core::Example
RSpec::Core::Metadata
[:example_group, :example_group_block, :caller, :execution_result]
[Hoge]
Hoge
.Class
.

Finished in 0 seconds
2 examples, 0 failures