hirakiucの日記

いろいろ

rails3 + rspec + helper method

まだ疑問に思っている程度の事。

rails3の複数のhelperに同じ名前のメソッドを作るとrspecできちんとテストできない様子。

以下のコードは実際に試したコードとは異なる名前なので、動作が異なるかもしれない。

ただ、このような状況が発生している事は残しておきたい。

例 ) こんな構成になっているとき。

# app/helper/top_helper.rb

module TopHelper
  def my_helper_method
    "top helper method"
  end
end

# app/helper/second_helper.rb
module SecondHelper
  def my_helper_method
    "second helper method"
  end
end
rspec
# spec/helpers/top_helper_spec.rb

require 'rspec_helper'
describe TopHelper do
  describe :my_helper_method do
    it { expect(helper.my_helper_method).to eq("top helper method") }
  end
end

これで動かしてみるとrspecがfailedな状態になる。

表示されるスタックトレースを見ると、どうやらSecondHelperの方が呼ばれている様子。


helper毎にmodule名が違うんだから、同じ名前のメソッド名つけてもきちんと使い分けてほしい。

まだ勉強不足でどこが原因なのか調べきれてないので、とりあえず状況をメモしてみた。