RSpec 컨트롤러 테스트-빈 response.body
RSpec으로 컨트롤러를 테스트 할 때 문제가 발생했습니다. response.body 호출은 항상 빈 문자열을 반환합니다. 브라우저에서 모든 것이 올바르게 렌더링되고 오이 기능 테스트가 제대로 된 것처럼 보이지만 RSpec은 매번 실패합니다.
응답 객체에 대한 기타 기대 (예 : response.should render_template('index')
문제없이 통과)
전에이 문제가 발생한 적이 있습니까? 아마도 다른 방법으로 응답 html을 얻을 수 있습니까?
버전은 Rails 2.1.0, RSpec 1.2.7입니다.
기본적으로 rspec-rails 는 실제로 뷰 템플릿을 렌더링 하지 못하도록 Rails를 해킹 합니다. 액션의 동작을 테스트하고 템플릿 렌더링의 결과가 아닌 컨트롤러 테스트를 필터링해야합니다. 이것이 뷰 사양의 목적입니다.
그러나 컨트롤러 사양에서 앱이 일반적으로하는 것처럼 템플릿을 렌더링하도록하려면 다음 render_views
지시문을 사용하십시오 .
describe YourController do
render_views
...
end
RSpec 2+ : 응답 본문에 대한 종단 URL을 확인하려면 컨트롤러 사양 대신 요청 사양을 사용하십시오 .
비슷한 문제로 작업하면서 (이 질문으로 이어졌습니다) 같은 고양이를 피부로 만드는 데는 여러 가지 방법이 있다는 것을 알게되었습니다. 즉, 본문을 확인하지 않고 플래시 내용을 확인할 수 있습니다.
response.body.should =~ /Invalid email or password/
다음과 같은 검사일 수 있습니다.
flash[:alert].should == "Invalid email or password"
나에게 후자는 어느 쪽이든 실행되므로 약간 더 유연 해 보이지만 모든 경우에 적절하지 않을 수 있습니다.
건배,
남자
기본적으로 RSpec-rails 구성은 컨트롤러 사양에 대한 템플릿 렌더링을 비활성화합니다.
이 문제를 해결하는 방법 중 하나는 파일 에서 render_views
설정 을 활성화하는 것 rails_helper.rb
입니다. 이러한 방식으로 모든 테스트에서 전역 적으로 작동 할 수 있습니다.
RSpec.configure do |config|
config.render_views
end
또는 개별 그룹에 render_views 선언을 사용합니다.
describe User do
render_views
end
여기에서 이에 대한 자세한 내용을 읽을 수 있습니다 .
참고 URL : https://stackoverflow.com/questions/1063073/rspec-controller-testing-blank-response-body
'code' 카테고리의 다른 글
자바 이름 숨기기 : 어려운 길 (0) | 2020.08.25 |
---|---|
Angular 구성 요소의 "private"및 "public" (0) | 2020.08.25 |
VB.NET에서 DirectCast ()와 CType ()의 차이점 (0) | 2020.08.25 |
항아리를 추출하고 다시 만들지 않고도 Jar / war에서 파일을 빠르게 삭제할 수있는 방법이 있습니까? (0) | 2020.08.25 |
누구든지 여전히 C #에서 [goto]를 사용합니까? 그렇다면 그 이유는 무엇입니까? (0) | 2020.08.25 |