리디렉션 및 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"))
:
나는 그것을 이해한다고 생각한다. "당신의 단언 된 경로는 컨트롤러 나 컨트롤러와 키로 작용하는 해쉬"라는 제안을하는 방법을 찾을 수 없었지만 빠진 매개 변수로 해시를 확장 할 수있었습니다. – jcoppens
명확히하기 위해 부분 일치는': controller => 'movies'' 또는': controller => movies', : action => 'index''입니다. 그 방법에 대한 문서가'movies_path'와 같은 명명 된 경로의 도입보다 먼저 나오면 나는 놀라지 않을 것입니다. – bgates
@bgates에 감사드립니다. 저는 그 조합과 다른 것들을 시도했지만 아무런 운이 없었습니다. 나는 다른 프로젝트에 시간을두고 약간의 압박을 받았다. 심지어 내 아내의 약국에서 시스템이 고장났다. 나중에 다시 확인하겠습니다. 위에서 편집 한대로, 나는 해결책을 찾았다. – jcoppens