0

Rails 3.2.3 アプリには、リソースとしてモデル化されたトピック コントローラーがあります。/topics への投稿が有効なルートであることを確認する機能テストを作成したいと考えています。これは最初に失敗するはずです。次に、コードを追加して修正します。ただし、ルーティング テストで失敗ではなくエラーが発生します。私は何を間違っていますか?(注: routes.rb でルートを修正すると、テストはパスします。テストで失敗する代わりにエラーが発生する理由がわかりません):

# 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
4

1 に答える 1

1

作成されたルート インroutes.rbは、テストしたルートとは異なります。:createコントローラーのアクションにルーティングする場合は、routes.rb次を使用する必要があります。

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

RailsGuidesのルーティングのトピックを参照してください。

于 2012-09-22T19:30:25.987 に答える