2016-03-22 13 views
0

benim rotalara aşağıdaki açıklamalara sahiptir:Rails Test Örneği'nde belirsiz bir isteği nasıl gönderebilirim?

resources :demands { resources: :solutions } 
resources :technologies { resources: :solutions } 

ve benim denetleyicisi testinde, iki istekleri göndermek istiyorum:

Get /demands/d123/solutions?technology_id=t123 
Get /technologies/t123/solutions?demand_id=d123 

Ama ikisi de (SolutionsControllerTest olarak) aynı çağıran maç:

get :index, demand_id: d123, technology_id: t123 

bu

olan routes.rb ilk tanım, eşleşen
resources :demands { resources: :solutions } 

Her iki isteği de ayrı yöntemlere nasıl göndermeliyim?

+0

ikinci isteği kendi denetleyici spec test olmamalı: o yönlendirme bileşeni geçer, böylece

Bunun yerine bir entegrasyon testi kullanın ve aslında bir HTTP isteği göndermek ister ki? –

cevap

0

İşlevsel (Denetleyici) sınamaları tüm istek aşamasında sahte olarak sınar. Bir rails sunucusunu çağırmak ve gerçek bir istek göndermek yerine ActionController::TestCase sadece bir Request nesnesi oluşturur ve bir denetleyici örneğine iletir. Bu, sunucuya bağlı bir entegrasyon testinde mümkün olmayan ve farklı süreçlerde çalışan testlerin mümkün olduğu şekilde gerçekleşmesini sağlar.

require 'test_helper' 

class AmbiguousRoutesTest < ActionDispatch::IntegrationTest 
    test "is /demands/d123/solutions?technology_id=t123 ambigous?" do 
    get "/demands/d123/solutions?technology_id=t123" 
    # @todo write assertions about the response 
    end 
end 
+0

Kusursuzluğumu mükemmel bir şekilde çözdünüz, teşekkürler! – Run