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

定義済みの定数を非表示にする

hide_constを使用して、テストの実行中に定数を削除します。

トップレベルの定数を非表示にする

Given "hide_const_spec.rb"という名前のファイルがあるとき、以下の内容である:

FOO = 7

RSpec.describe "hiding FOO" do
it "can hide FOO" do
hide_const("FOO")
expect { FOO }.to raise_error(NameError)
end

it "restores the hidden constant when the example completes" do
expect(FOO).to eq(7)
end
end

When rspec hide_const_spec.rbを実行するとき、

Then すべての例がパスするはずです。

ネストされた定数を非表示にする

Given "hide_const_spec.rb"という名前のファイルがあるとき、以下の内容である:

module MyGem
class SomeClass
FOO = 7
end
end

module MyGem
RSpec.describe SomeClass do
it "hides the nested constant when it is fully qualified" do
hide_const("MyGem::SomeClass::FOO")
expect { SomeClass::FOO }.to raise_error(NameError)
end

it "restores the hidden constant when the example completes" do
expect(MyGem::SomeClass::FOO).to eq(7)
end
end
end

When rspec hide_const_spec.rbを実行するとき、

Then すべての例がパスするはずです。

未定義の定数を非表示にする

Given "hide_const_spec.rb"という名前のファイルがあるとき、以下の内容である:

RSpec.describe "hiding UNDEFINED_CONSTANT" do
it "has no effect" do
hide_const("UNDEFINED_CONSTANT")
expect { UNDEFINED_CONSTANT }.to raise_error(NameError)
end

it "is still undefined after the example completes" do
expect { UNDEFINED_CONSTANT }.to raise_error(NameError)
end
end

When rspec hide_const_spec.rbを実行するとき、

Then すべての例がパスするはずです。