Rspec으로 앱 테스트하기
Created by Clemens Helm, @clemenshelm and Floor Drees, @floordrees
번역 @corazzon
Rspec은 루비 테스팅 프레임워크입니다. 문장으로 어플리케이션 명세에 대한 행동(behavior)을 적으며, 루비답지 않습니다. 터미널에 테스트 결과가 표시되기 때문에 읽기 능력을 테스트할 수 있습니다(농담입니다).
COACH: 테스팅과 BDD(Behavior-Driven Development)에 대해 얘기해 보세요.
rspec 설치
처음 시작하는 분들을 위해 RSpec과 의존성있는 gem 들을 설치 합니다.
그리고 나서 다음의 명령어로 초기화 해줍니다.
프로젝트 폴더의 spec폴더에 spec_helper.rb
을 만들어 주세요. 그리고 .rspec
도 만들어 주세요.
루비스트는 종종 ‘테스트’와 ‘명세’를 바꿔 말하기도 하는데 그 이유는 테스트를 ‘spec’폴더에 저장하기 때문에이에요. 다음과 같이 테스트 파일을 만들어 보세요. idea_spec.rb
(<name_of_spec>_spec.rb
).
새로 만든 파일 안에는 다음과 같이 작성해 보세요:
그리고 명세 중 하나를 설명합니다.
터미널에서 다음과 같이 실행해 보세요.
아직 구현되지 않았기 때문에 테스트가 보류 중인 것을 출력합니다.
COACH: 터미널에 출력된 것을 어떻게 구글링해볼지 얘기해 보세요.
그럼 다음과 같이 작성해봐요!
좀 더 만족스러운 결과를 볼 수 있을 거예요.
리팩토링
아래처럼 작성할 수도 있습니다:
이렇게 작성하는 것이 좀 더 나아 보입니다. 하지만 마법처럼 엮여있는 거 같아 이해하기 어려워요. 지금 당장은 괜찮아 보일지 몰라도, 좀 더 경험이 쌓이면 큰 덩어리를 조금 더 작게 ‘리팩토링’할 수 있습니다.
COACH: 리팩토링에 대해 얘기해봐요.
To-do 목록으로 테스트 할 항목을 표시 해 놓기
To-do 목록은 놀랍습니다. RSpec의 멋진 기능은 특정 테스트를 보류 중으로 표시하는 것입니다. 앞으로 작성이 필요한 테스트 항목에 대해 적습니다.
예제의 몸체에서 do
와 end
를 제거합니다. 이렇게요.
테스트가 보류 중으로 표시됩니다. 한 번에 하나의 테스트를 처리하려는 더 큰 어플리케이션의 경우, 예제 앞에 x
를 추가하여 읽을 수 있게 합니다.
여러분의 예제에 ‘보류 중’인 단어를 사용해 보세요.
Behavior-Driven Development
일반적으로 BDD 테스트는 약간 다른 방식으로 진행됩니다. 우리가 만들고자 하는 애플리케이션에 대해 생각하면서, 예상되는 결과를 작성한 후, 마음속에 있는 명세를 단계별로 단계적으로 구축합니다.
처음으로 작성할 것은
그리고 아이디어 클래스를 소개하는idea.rb
라는 파일을 만드세요.
클래스를 구현하기 전에 터미널에서 rspec spec/lib/idea_spec.rb
을 실행하면 에러가 발생합니다. 다행히 오류는 두려워할 필요가 없습니다. RSpec 오류는 실제로 필요한 코드를 작성하는 데 도움이 됩니다!
가이드를 따라 테스트를 작성하고 테스트하여 제대로 구현하였는지 확인해 보세요.
그럼,
즐거운 테스팅 되세요!