2016-03-10 62 views
7
Ben URI::InvalidURIError test Raylar Ev denetleyicisi olsun

:URI :: InvalidURIError: geçersiz URI (URI değil mi?) Raylar denetleyicileri test

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>' 

yığını:

require 'test_helper' 

class HomeControllerTest < ActionDispatch::IntegrationTest 
    test "should get index" do 
    get :index 
    assert_response :success 
    end 
end 

aşağıdaki hatayı alıyorum aşağıdaki: Test sırasında

Rails 5.0.0.beta3 
minitest (5.8.4) 

cevap

14

Kontrolör testleri, ActionController::TestCase devralan , ActionDispatch::IntegrationTest'dan kalmadır. Yani bir entegrasyon testi kullanıyorsunuz ve kontrol cihazı testi değil.

hatadır:

http://www.example.com:80index

, öyle düzgün görünmüyor mı?

get '/index' 

entegrasyon testleri gerçekten bu konuda (veya başka bir şey) herhangi bir spesifik denetleyiciye bağlı değil, hatırlayın: ;-)

çözüm tam yolunu kullanmaktır. Uygulamanızdaki çeşitli bileşenlerin entegrasyonunu test ederler. Bu nedenle, UserController'un index eylemini test ediyorsanız muhtemelen /users/index'u kullanmanız gerekir.

Bir tümleştirme sınaması değil, bir denetleyici sınaması yapmayı düşünüyorsanız, doğru üst sınıfa ayarlamak istiyorsunuz. get :index'u kullanarak (dizin yöntemi için) iyi çalışmalıdır.

+0

hey, ben hiç benim denetleyicisi testlerinde 'ActionDispatch :: IntegrationTest' o ... ben görmedim Bu –

+1

içine kazma ... garip, öyle görünüyor ki Rails 5.0.0.beta3, iskele jeneratörü bu gibi test denetleyicileri üreten varsayılan/tasarım ... –

+0

@ LucaG.Soave Taht garip görünüyor ... Jeneratör araçlarını gerçekten çok kullanıyorum, ama belki yanlış mı kullanıyorsunuz? Her halükarda, entegrasyon testleri kontrolör testlerinden çok farklı değildir ve AFAIK bir kontrolör testinde yapabileceğiniz her şeyi, bir entegrasyon testinde yapabilirsiniz (ancak diğer şekilde değil). Uyum sınavlarını kendim kullanmayı tercih ederim. – Carpetsmoker

1

Deneyebilirsin:

get home_index_path 

yerine:

get :index