у меня есть странная проблема .. RSpec генерируется именованный menus_routing_spec.rb класса в спецификации/маршрутизацииRSpec тест маршрутизации проблемы с Params в вложенных ресурсов
тесты терпят неудачу, потому что меню является вложенным ресурс ресторана.
это мой тест:
describe MenusController do
before :each do
@restaurant = FactoryGirl.create(:random_restaurant)
@menu = FactoryGirl.create(:menu)
end
describe 'routing' do
it 'routes to #index' do
params = {}
params['restaurant_id'] = @restaurant
#get('/restaurants/:restaurant_id/menus').should route_to('menus#index')
#get(restaurant_menus_path(@restaurant)).should route_to('menus#index')
#get(restaurant_menus_path, { :restaurant_id => @restaurant }).should route_to('menus#index')
get restaurant_menus_path, { :restaurant_id => @restaurant.to_param }
expect(response).should route_to('menus#index')
end
путь в маршрутизации рейка выглядит следующим образом:
restaurant_menus_path GET (/:locale)/restaurants/:restaurant_id/menus(.:format) menus#index
я получаю всегда сообщение об ошибке:
Failure/Error: get restaurant_menus_path, @restaurant.to_param
ActionController::UrlGenerationError:
No route matches {:action=>"index", :controller=>"menus"} missing required keys: [:restaurant_id]
Я попытался также другие ... но такая же ошибка .. Кто-нибудь может увидеть, где я делаю ошибку?
это тест в спецификации/контроллеры/menus_controller_spec.rb, который работает отлично
it 'renders the index template' do
get :index, { :restaurant_id => @restaurant }
expect(response).to render_template('index')
end
Большое спасибо за помощь
Эй, Джош, спасибо .. это, кажется, хороший способ это сделать .. намного чище .. спасибо .. – damir