stub_const がランダムで落ちる

(null)

rspecで stub_const がランダムで落ちてました。

stub_const("Hoge::PER_PAGE",2)

というコード。
spec_helperのconfig.orderを”random”に指定しているので、落ちたときのseed値を指定して実行すると100% failer します。。

$ bundle exec rspec --seed 10203 --fail-fast

色々調べた結果、Hogeというclassが定義される前にstub_constを実行されると落ちていました。
Hogeの定義ごとstub_constが乗っ取ってしまうので、Hogeクラスが空っぽになってしまうんですね!

当該クラスをrequireするとか、手前で明示的にHogeを無意味に呼んでおくとか、色々考えましたが、イケてない。。

結論

もっと調べたらgithubにissueがありました。

stub_const("#{Hoge}::PER_PAGE",2)

とするのが正しいそうです。
なるほど、頭良すぎだろ悔しい。

stub_const を使うときに当該定数までのnamespaceやclassは式展開で指定するといい感じっぽいです!

シェアする

  • このエントリーをはてなブックマークに追加

フォローする