テストのとき、定数を再代入した時のwarningを止めたい
Rubyに定数を再代入すると、warningが出ます。
(あたりまえというか、本来は定数は代入できない)
ですが、テストのために代入したいという場合があります。
その場合は、
it "StatusView=trueでget('index')adminはsuccess" do StatusView=true session[:user]=users(:fujioka) get 'index' response.should be_success end it "StatusView=trueでget('index')managerはsuccess" do StatusView=true session[:user]=users(:manager) get 'index' response.should be_success end
こんなのを書くと、
ってな感じで、warningがうざいのですが、
remove_constで定数を削除してあげると、代入可能になります。
privateメソッドだと思うので、Object.sendで呼び出します。
before do Object.send(:remove_const,"StatusView") if defined?(StatusView) end
こんな感じでテストメソッドごとに呼び出されるように書くと、
きれいにテストが通るようになって気持ちいいです。
ちなみに、warningを消したいといった時に
eban: $VERBOSE=nil unak: stdoutを殺す
という意見がありました。今回は定数だけの影響に
とどめておきたいので、remove_constでいいでしょう。