Rails 4.0.0beta1 を使用して、いくつかの統合テストを作成しようとしています。私のすべての URL は私locale
(例/en/user/new
) にスコープされており、呼び出しを試みるたびに次のエラーが発生しますnew_user_url
。
ActionController::UrlGenerationError: No route matches {:action=>"new", :controller=>"user"} missing required keys: [:locale]
次の質問で@Balint Erdiが提供する解決策を試しました
class ActionController::Integration::Session
def url_for_with_default_locale(options)
options = { locale: I18n.locale }.merge(options)
url_for_without_default_locale(options)
end
alias_method_chain :url_for, :default_locale
end
動作しますが、rails4 のために非推奨の警告が表示されます:
DEPRECATION WARNING: ActionController::Integration is deprecated and will be removed, use ActionDispatch::Integration instead. (called from <top (required)> at /path/to/project/test/test_helper.rb:46)
DEPRECATION WARNING: ActionController::IntegrationTest is deprecated and will be removed, use ActionDispatch::IntegrationTest instead. (called from <top (required)> at /path/to/project/test/test_helper.rb:46)
私のコントローラーテストでは、これを追加しました:
class ActionController::TestCase
module Behavior
def process_with_default_locale(action, http_method = 'GET', parameters = nil, session = nil, flash = nil)
parameters = { locale: I18n.locale }.merge( parameters || {} )
process_without_default_locale(action, http_method, parameters, session, flash)
end
alias_method_chain :process, :default_locale
end
end
メソッドをテストに直接追加することもテストしましdefault_url_options
たが、機能しませんでした。
統合テストでデフォルトの URL パラメータを設定するにはどうすればよいですか?