結論
stub_const
が使えないので、Module#const_set
を使いましょう
詳細
let(:unit) do
Module.new do
def self.name do
'TestUnit'
end
end
end
before { stub_const("#{unit.name}::FOO", 1) }
it { ... }
とかやろうとしてたんです。
(Module#nameは、通常名前が必要になった時に決定されるので、最初に定義が必要)
ところが、これをやると
RuntimeError:
undefined TestUnit::FOO
と言われてしまうわけです。
@r7kamura さんに相談した所、stub_const
が実行されるときには、TestUnit
があることを前提に定義しようとするため、この場合は見つからないと言われてしまうようです。
(ちなみに、 let!(:unit)
で定義しても同様でした…。)
なので、このようにしました。
let(:unit) do
Module.new
end
before { unit.const_set("FOO", 1) }
it { ... }
1 examples, 0 failures
YATTA!