2017-06-07 12 views
3

私はRailsのチュートリアルに従っており、いくつかのテストを追加するいくつかのページがあります。_pathを使用すると "No route matches .."エラーが発生する

私はhelp_pathの代わりに使用しようとしています:私のpages_controller_testのヘルプ:

test "should get help" do 
    get help_path 
    assert_response :success 
    assert_select "title", "Help | #{@base_title}" 
end 

を私はroutes.rbをファイルに次の行を追加:

get '/help', to: 'pages#help' 

しかし、私はこのエラーを取得する:

1) Error: PagesControllerTest#test_should_get_help: ActionController::UrlGenerationError: No route matches {:action=>"/help", :controller=>"pages"} test/controllers/pages_controller_test.rb:62:in `block in '

私はいくつかのソリューションを試しましたが、いずれも私の問題を解決しませんでした。 私はまた、代わりにこのラインを使用して試してみた:

match '/home' => 'main_pages#home', :as => :home 

をしかし、それはどちらか動作しませんでした。

マイレールのバージョンは次のとおりです。4.2.4 私のRubyのバージョンです:$レーキルートのルビー2.1.9p490(2016年3月30日リビジョン54437)[x86_64の-のlinux-gnuの]

出力:

Prefix Verb URI Pattern   Controller#Action 
root GET/     pages#home 
help GET /help(.:format)  pages#help 
courses GET /courses(.:format) pages#courses 
programs GET /programs(.:format) pages#programs 
schools GET /schools(.:format) pages#schools 
dashboard GET /dashboard(.:format) pages#dashboard 
profile GET /profile(.:format) pages#profile 
account GET /account(.:format) pages#account 
signout GET /signout(.:format) pages#signout 

EDIT: 私のHTMLコードでhelp_path ..などを使用することはできますが、テストではエラーが発生します。 ありがとうございました:)

+0

あなたのルートの定義(使用 ' 'help''と'' の代わりhome'')にスラッシュを含めないでください。また、 'rake routes'を実行してすべてのルートを表示します。 – mmichael

+0

コントローラとあなたの 'routes.rb'全体を追加できますか? –

+0

@SebastiánPalma私のapplication_controllerはhello関数しか持っていません –

答えて

1

私はrepo、Rails 4.2.4、Minitest 5.10.2を使ってテストを実行しましたが、パスしないテストはget help_pathです。私が何をしたか

PagesControllerTest#test_should_get_help_using_"get_:help" = 0.39 s = . 
PagesControllerTest#test_should_get_help_using_"get_help_path" = 0.00 s = E 
PagesControllerTest#test_should_get_help_using_"get_'help'" = 0.01 s = . 

Finished in 0.405330s, 7.4014 runs/s, 9.8685 assertions/s. 

    1) Error: 
PagesControllerTest#test_should_get_help_using_"get_help_path": 
ActionController::UrlGenerationError: No route matches {:action=>"/help", :controller=>"pages"} 
    test/controllers/pages_controller_test.rb:70:in `block in <class:PagesControllerTest>' 

3 runs, 4 assertions, 0 failures, 1 errors, 0 skips 

あなたは、コントローラを指定するテストするためにルートとして help_pathとテスト作業を行うために使用することができますどのような
$ rm -rf Gemfile.lock (because of a json -v 1.8.1 gem error) 
$ bundle 
$ rake db:migrate 
$ rake db:migrate RAILS_ENV=test 
$ rake test test/controllers/pages_controller_test.rb -v 

私はポストを短縮するための唯一の3つのテストを置きますそして、アクションが使用することです:

assert_routing asserts that the routing of the given path was handled correctly and that the parsed options (given in the expected_options hash) match path. Basically, it asserts that Rails recognizes the route given by expected_options.

または:

assert_recognizes asserts that path and options match both ways; in other words, it verifies that path generates options and then that options generates path. This essentially combines assert_recognizes and assert_generates into one step.

同様:

test "should get help using assert_recognizes and help_path" do 
    assert_recognizes({controller: 'pages', action: 'help'}, help_path) 
    assert_response :success 
end 

test "should get help using assert_routing and help_path" do 
    assert_routing help_path, controller: 'pages', action: 'help' 
    assert_response :success 
end 
+0

ありがとうございました! –

+0

ようこそ(: –

関連する問題