I get URI::InvalidURIError
testing Rails Home controller:
require 'test_helper'
class HomeControllerTest < ActionDispatch::IntegrationTest
test "should get index" do
get :index
assert_response :success
end
end
get the following error:
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>'
The stack is the following:
Rails 5.0.0.beta3
minitest (5.8.4)
You can try:
instead of:
Controller tests inherit from
ActionController::TestCase
, while your test inherits fromActionDispatch::IntegrationTest
. So you're using an integration test and not a controller test.The error is:
That doesn't look right, does it? ;-)
The solution is to use a full path:
Remember, integration tests aren't really tied to any specific controller (or anything else, for that matter). They test the integration of several components in your application. So if you're testing the
index
action of aUserController
you'd probably need to use/users/index
.If you intended to make a controller test and not an integration test, you want to set the correct superclass. Using
get :index
(for the index method) should work fine then.