URI::InvalidURIError
テストRailsホームコントローラー:
require 'test_helper'
class HomeControllerTest < ActionDispatch::IntegrationTest
test "should get index" do
get :index
assert_response :success
end
end
次のエラーが発生します。
E
Error:
HomeControllerTest#test_should_get_index:
URI::InvalidURIError: bad URI(is not URI?): http://www.example.com:80index
test/controllers/home_controller_test.rb:7:in `block in <class:HomeControllerTest>'
スタックは次のとおりです。
Rails 5.0.0.beta3
minitest (5.8.4)
コントローラテストはActionController::TestCase
から継承しますが、テストはActionDispatch::IntegrationTest
から継承します。したがって、コントローラーテストではなく、統合テストを使用しています。
エラーは次のとおりです。
それは正しく見えませんね? ;-)
解決策は、fullパスを使用することです。
get '/index'
統合テストは、実際には特定のコントローラー(またはその他のコントローラー)に関連付けられていないことを忘れないでください。これらは、アプリケーション内のいくつかのコンポーネントの統合をテストします。したがって、index
のUserController
アクションをテストする場合は、おそらく/users/index
を使用する必要があります。
統合テストではなくコントローラーテストを行う場合は、正しいスーパークラスを設定する必要があります。 get :index
(インデックスメソッド用)を使用すると、正常に機能するはずです。
あなたが試すことができます:
get home_index_path
の代わりに:
get :index