테스트 - Functional 테스트
Last updated
Was this helpful?
Last updated
Was this helpful?
Functional 테스트(기능 테스트)는 컨트롤러(액션)의 동작 또는 템플릿의 출력을 확인하기 위한 테스트이다. Functional 테스트에서는 브라우저처럼 HTTP 요청을 유사적으로 작성하는 것으로 액션 메서드를 실행하고 그 결과로 HTTP 상태 코드, 템플릿 변수 또는 최종적인 출력 구조 등을 확인한다. 또한, 라우트 정의의 유효성을 확인하는 것도 Functional 테스트의 역할이다.
/test/controllers
폴더 내부에 xxx_controller_test.rb
에 test 메서드로 테스트를 작성한다. 아래는 예시.
테스트 메서드를 작성하는 것 자체는 Unit 테스트와 같지만, 몇 가지 Functional 테스트만의 포인트가 있다.
get 메서드로 요청 생성
Functional 테스트에서는 일단 컨트롤러를 실행하기 위해 로 HTTP 요청을 생성한다.
아래는 매개 변수 정보를 함께 전달하는 예제!
Functional 테스트에서 이용할 수 있는 예약 변수
Functional 테스트에서는 get, post 등의 메서드를 사용한 후에 아래 예약 변수에 접근할 수 있다.
분류
변수 이름
설명
객체
@controller
요청을 처리한 컨트롤러 클래스
객체
@request
요청 객체
객체
@response
응답 객체
해시
assigns(:key), assigns['key']
뷰에서 사용할 수 있는 템플릿 변수
해시
cookies[:key]
쿠키 정보
해시
flash[:key]
플래시 정보
해시
session[:key]
세션 정보
Functional 테스트에서 사용할 수 있는 assert_xxxx 메서드
Unit 테스트에서 썼던 Assertion 메서드 말고도 Functional 테스트에서 추가로 쓸 수 있는 Assertion가 있다. 중요한 것 몇 개를 정리해보자면 아래와 같다.
assert_difference
메서드: 처리 후 상태 변화 확인
assert_generates
메서드: 라우팅 동작 확인
assert_select
메서드: 템플릿 출력 결과 확인