Railsのテストで定数のスタブが欲しい場合
at 2015-12-16 10:07 (UTC)
Railsの ActiveSupport::TestCase
は minitest を使っていて、minitest/mock には定数をスタブ化する機能はない。
adammck/minitest-stub-const ってのはあるけど、外部ライブラリ入れるほどじゃないよねって場合があるかもしれない。
class Foo
BAR = 'bar'
end
class FooTest < ActiveSupport::TestCase
setup do
@original = Foo.send(:remove_const, :BAR)
Foo.const_set(:BAR, 'new_value')
end
teardown do
Foo.send(:remove_const, :BAR)
Foo.const_set(:BAR, @original)
end
test 'Foo::BARのテスト' do
assert_equal 'new_value', Foo::BAR
end
end
そんな時はこんな感じのコードでいいんじゃないかな?
こういうトリッキーなのは最終手段的なもので、定数を環境ごとに設定ファイルに定義できるような gem を使うべきだとは思う。やってみたらできたというお話