2013-04-30 3 views
3

에 내가 일하고 있어요 응용 프로그램의 경로를 가지고, 그것은 RSpec에 라우팅 테스트에서 오류 만이 아닌 응용 프로그램

match ":place_id/:id", :controller => "companies", :action => "show", :place_id => /\S{2}/ 

그래서 브라우저에서 나는이 URL로 이동할 수 있습니다 ... 다음과 같습니다.

mylocalmachine/GB/서버에서 일부-기업

는 모든 좋은 기록합니다.

Started GET "/gb/some-company" for 127.0.0.1 at 2013-04-30 17:44:52 +0100 
Processing by CompaniesController#show as HTML 
    Parameters: {"place_id"=>"gb", "id"=>"some-company"} 

컨트롤러 사양에서이 경로와 동작을 테스트하려고합니다.

get "/gb/some-company" 

는하지만이 오류를

ActionController::RoutingError: No route matches {:controller=>"companies", :action=>"gb/some-comapny"} 

참고를 얻을 : 나는 시험 작동하는지하지만 아무 행운을 볼 위해 routes.rb 파일의 상단에이 경로를 퍼팅 시도했다. 또한 다른 모든 스펙은 통과 중입니다. 제가 잘못 될 수있는 아이디어는 인정 될 것입니다.

UPDATE : 이것은 ... 테스트의 모습 RSpec에 컨트롤러 테스트는 설명 컨트롤러의 액션 이름에 직접 요청과 일치하기 때문이다

params_from(:get, "/gb/some-company").should == {:controller => "companies", :action => "show", :country_id => "gb", :id => "some-company"} 

답변

3

입니다. 당신이 교체 할 경우

귀하의 테스트는 아마이

describe CompaniesController do 
    it "does something" do 
    get "/gb/some-company" 
    end 
end 

처럼 보이는 당신의 get "/gb/some-company"

get :show, {place_id: 'gb', id: 'some-company'}

와 나는 당신이 작동하는 방법 일 것입니다 확신합니다.

실제로 RSpec을 통해 "/ gb/some-company"로 요청하려는 경우 요청 사양을 살펴볼 수 있습니다.

그들은 당신이 RSpec에 이전 버전을 사용하고 있는지, 당신은 내가 업데이트 된 질문에 따라, 이제 믿고있어이

describe "Company stuff" do 
    it "is awesome" 
    get "/gb/some-company" 
    end 
end 

UPDATE

처럼 뭔가를 할 수 있습니다. RSpec에 2 현재 당신이 원하는에 따라, 어떤 경우에서는 params_from 방법

이 없습니다, 당신은 routing specs

당신이

describe "Company matching" do 
    it "matches the routes" do 
    expect(:get => '/gb/some-company').to route_to(:controller => "companies", :action => "show", :country_id => "gb", :id => "some-company") 
    end 
end 
RSpec에 2에서 다음과 같이 보일 것입니다 원하는 사양을 사용하려면

나는 자신의 문서를 찾을 수없는 것처럼 이전 버전의 RSpec에서 어떻게 보일지 100 % 확신하지 못했습니다.

+0

예,이 테스트는 실제로 매개 변수가 URL에서 제대로 추출되었는지 테스트하는 데 효과적입니다. 실제 테스트를 보여주기 위해 질문을 업데이트했습니다. 테스트를 작성할 수있는 더 좋은 방법이 있습니까? – cih

+0

내 업데이트 된 답변을보세요 –

+0

그게 정확히 내가 뭘하는지, 레일 2 ~ 3 및 RSpec에서 2 버전으로 앱을 업그레이드하는 중입니다. 도움에 감사드립니다! – cih