2012-04-11 3 views
0

В моем приложении rails 3.2.3 у меня есть контроллер тем, который моделируется как ресурс. Я хочу написать функциональный тест, чтобы проверить, что post on/themes является допустимым маршрутом. Сначала это приведет к сбою, а затем я добавлю код для его исправления. Тем не менее, я получаю ошибку в тесте маршрутизации вместо отказа. Что я делаю неправильно (Примечание: Если исправить маршрут в routes.rb, тест проходит - просто не знаю, почему я получаю сообщение об ошибке вместо сбоя в тесте):assert_routing с методом дает ошибку вместо отказа

# topics_controller_test.rb

test 'route exists to create topic' do 
    assert_routing({:path => '/topics', :method => 'post'} , { :controller => "topics", :action => "create"}, {}, {}, 'could not route to create topic') 
end 

# routes.rb

resources :topics, :only => [:new] 

# terminal output

$ rake test:functionals 
Run options: 

# Running tests:

.....E. 

Finished tests in 0.373543s, 18.7395 tests/s, 53.5414 assertions/s. 

1) Error: 
test_route_exists_to_create_topic(TopicsControllerTest): 
ActionController::RoutingError: No route matches "/topics" 
.../gems/ruby-1.9.3-p0/gems/actionpack-3.2.3/lib/action_dispatch/routing/route_set.rb:633:in `recognize_path' 
.../gems/ruby-1.9.3-p0/gems/actionpack-3.2.3/lib/action_dispatch/testing/assertions/routing.rb:210:in `recognized_request_for' 
.../gems/ruby-1.9.3-p0/gems/actionpack-3.2.3/lib/action_dispatch/testing/assertions/routing.rb:42:in `assert_recognizes' 
.../gems/ruby-1.9.3-p0/gems/actionpack-3.2.3/lib/action_dispatch/testing/assertions/routing.rb:118:in `assert_routing' 
     `.../myapp/test/functional/topics_controller_test.rb:25:in block in <class:TopicsControllerTest>'` 

>> 7 tests, 20 assertions, 0 failures, 1 errors, 0 skips 

ответ

1

Создаваемый маршрут routes.rb отличается от маршрута тестирования. Если вы хотите, чтобы маршрут к :create действия в контроллере, в вашем routes.rb вы должны использовать:

resources :topics, :only => [:create] 

Смотрите routing topic в RailsGuides.

Смежные вопросы