糕飛.想點三十而立.努力發奮

2012年8月17日 星期五

rails 3 下的 rspec 與 locale 的問題

+ 暫沒回應
早兩天才弄妥在 rails 上用 locale,設定好 router 將 /en/users/ 和 /zh/users/ 定做不同的語言後。本以為一切弄妥,誰知用 rspec 做 unit test 時,卻出現認不到 path 的情況。明明是 controller 已經設定好,rspec 卻說找不到對應的 function。在 google 找了很久,才找到原因:rspec 沒有執行新加在 application_controller 中的 set_locale function,所以認不出 locale 路徑!

解決方法也因為不熟悉 rails ,所以要再找了一會才找到答案

將以下的 code 放進 /spec/support/default_locale.rb 便可。這樣便不用特意將 locale 塞進 path function 裏,方便簡潔不少。
#./spec/support/default_locale.rb
class ActionView::TestCase::TestController
  def default_url_options(options={})
    { :locale => I18n.default_locale }
  end
end

class ActionDispatch::Routing::RouteSet
  def default_url_options(options={})
    { :locale => I18n.default_locale }
  end
end
因為此問題又花了兩天時間研究,真令人沮喪。