2010-03-10 4 views
2

Я использую asserts_redirected_to в моих модульных тестах, и я получаю это предупреждение:Ruby on Rails: Каковы частичные аргументы хэша и аргументы полного набора?

Deprecation ПРЕДУПРЕЖДЕНИЕ: Использование assert_redirected_to с частичными аргументами хэша осуждается. Вместо этого укажите полные аргументы.

Что такое частичный аргумент хэша, и что такое полный набор аргументов? Это не те термины, которые я видел раньше в Rails-сообществе, и единственные релевантные результаты, которые я могу найти в Google, относятся к этому предупреждению об устаревании.

Вот мой код:

assert_redirected_to :controller => :user, :action => :search 

также попытался:

assert_redirected_to({:controller => :user, :action => :search}) 

Я мог бы догадаться, что он чувствует, что я пропускаю некоторые параметры или что-то подобное, но в документации API явно говорит что не все параметры должны быть включены:
http://rails.rubyonrails.org/classes/ActionController/Assertions/ResponseAssertions.html

ответ

1
http://github.com/rails/rails/blob/ab6d295ce41ba2aad400474dcf45052e7b631b53/actionpack/lib/action_controller/assertions/response_assertions.rb 

Проверьте эту ссылку. Попробуйте дать тот же хэш, который вы дали в действии.

+1

Так получается, что он жаловался, что мне не хватает некоторых параметров, а также документации по API просто забыл упомянуть, что особенность его описание того, что не нужно указывать все аргументы, не рекомендуется. Черт возьми, даже комментарии к источнику, с которым вы связались, говорят, что все в порядке, не говоря уже об устаревании. Я даже не могу себе представить, почему это устарело, кажется важной особенностью, позволяющей использовать частичные хэши. В любом случае, спасибо за помощь. Очень признателен. –

0

Похоже

assert_redirected_to :action => :show 

является опального над

assert_redirected_to :action => :show, :controller => :music