Тестирование именованного маршрута в рельсах - PullRequest
0 голосов
/ 03 сентября 2010

У меня есть следующий маршрут, определенный в routs.rb:

map.search 'fuzzyleads/search/:url', :controller => 'fuzzyleads', :action => 'search', :method => 'get'

Проблема в том, что я не могу пройти этот тест:

def test_search_route
  assert_generates "fuzzyleads/search/someurl", { :controller => "fuzzyleads", :action => "search", :url => "someurl" }
end

Не нравится часть URL, я получаю следующую ошибку:

найдены дополнения <{: url => "someurl"}>, а не <{}>

Понятия не имею почему, кто-нибудь может увидеть, что я делаю неправильно?

1 Ответ

0 голосов
/ 03 сентября 2010

Вывод rake routes поможет нам сделать более правильное предположение. Вот как я тестировал с использованием rails-2.3.8:

(1) Добавлен ваш маршрут в качестве второго маршрута в config/routes.rb

(2) Создан следующий тест rspec:

it "should have valid route for fuzzyleads search" do
  route_for(:controller => 'fuzzyleads', :action => 'search', :url => 'someurl').should ==
    "/fuzzyleads/search/someurl"
end

Но это не удалось со следующим:

ActionController::RoutingError in 'FuzzyLeadsController should have valid route for fuzzyleads search'                   
No route matches "/fuzzyleads/search/someurl" with {:method=>:get}                                                  
If you're expecting this failure, we suggest {:get=>"/fuzzyleads/search/someurl"}.should_not be_routable 

Но когда я снял ограничение :method, все работало успешно. Добавление :method => 'get' оказалось недостаточным для успешного прохождения теста. Я видел подобные сбои, когда устанавливал условия для маршрутов, которые не были выполнены, поэтому я предполагаю, что нечто подобное происходит в вашем случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...