2013-08-16 5 views
2

리디렉션 및 URL 매개 변수를 확인하기위한 작은 테스트를 작성했습니다.여러 매개 변수가있는 rspec redirect_to

Failure/Error: response.should redirect_to(movies_path(:sort => 'title')) 

Expected response to be a redirect to 
<http://test.host/movies?sort=title> 
but was a redirect to 
<http://test.host/movies?ratings%5BG%5D=G&ratings%5BNC-17%5D=NC-17&ratings%5BPG%5D=PG&ratings%5BPG-13%5D=PG-13&ratings%5BR%5D=R&sort=title> 

URL이 (그들이이어야하는)가 동일하며, 예상 매개 변수 '종류 = 제목이'에 포함되어 있습니다 : 이상하게 테스트가 오류 메시지가 결과를 표시하는 것, 비록 실패 실제로 올 실제 결과의 매개 변수. 나는 이것이 유효한 상황이라고 생각합니다 ...

Acoording to http://api.rubyonrails.org/classes/ActionDispatch/Assertions/ResponseAssertions.html#method-i-assert_redirected_to : "이 일치는 부분적으로, assert_redirected_to (컨트롤러 :"weblog ")도 redirect_to (컨트롤러 :"weblog ", action : "쇼") 등등. "

해결 방법 : 내가 선택한 답변의 제안을받을 수 없었지만 위의 링크에서 '부분 일치'가 다소 오도 된 것으로 설명하는 데 도움이되었으며 코드는 다음과 같이 작동하지 않았습니다. 예상했다. 그래서, 내가받은 모든 매개 변수와 Hash을 생성하고, 'redirect_to한다'테스트에 추가 :

response.should redirect_to(movies_path(:sort => 'title', :ratings => rest)) 

', 나머지는'그 해시입니다. 그것은 리디렉션에 대한 완전한 경로 여야합니다

response.should redirect_to(movies_path(:sort => 'title', :ratings => "Ratings")) 

:

답변

2

설명서의 오해의 소지가 있습니다. 내부적으로 assert_redirected_tonormalize_argument_to_redirection을 호출합니다. (해시가 인수로 제공되는 경우) 비교를 수행하기 전에 url_for을 호출합니다. 기본적으로 부분 일치는 경로의 기본 패턴이 :controller/:action/:id이고 주장하는 경로가 컨트롤러 또는 컨트롤러와 키가있는 해시 인 경우에만 작동합니다.

+0

나는 그것을 이해한다고 생각한다. "당신의 단언 된 경로는 컨트롤러 나 컨트롤러와 키로 작용하는 해쉬"라는 제안을하는 방법을 찾을 수 없었지만 빠진 매개 변수로 해시를 확장 할 수있었습니다. – jcoppens

+1

명확히하기 위해 부분 일치는': controller => 'movies'' 또는': controller => movies', : action => 'index''입니다. 그 방법에 대한 문서가'movies_path'와 같은 명명 된 경로의 도입보다 먼저 나오면 나는 놀라지 않을 것입니다. – bgates

+0

@bgates에 감사드립니다. 저는 그 조합과 다른 것들을 시도했지만 아무런 운이 없었습니다. 나는 다른 프로젝트에 시간을두고 약간의 압박을 받았다. 심지어 내 아내의 약국에서 시스템이 고장났다. 나중에 다시 확인하겠습니다. 위에서 편집 한대로, 나는 해결책을 찾았다. – jcoppens

1

당신은 뭔가를 넣어해야합니다.

+0

Hello Rodrigo. '완전한 경로'로 모든 매개 변수가 실제로 필요하다는 것을 의미합니까? rspec 문서에 따르면 예제를 사용하더라도 부분 일치가 허용됩니다. 나머지 URL 매개 변수를 알 수 없지만 그 중 하나만 확인해야하는 경우 어떻게해야합니까? – jcoppens

+0

나는 그렇게 생각한다. 경로는 매개 변수에 따라 다릅니다. –

관련 문제