저자는 실제 RSpec 테스트 예시를 통해 깊게 중첩된 컨텍스트와 let
변수가 어떻게 테스트 코드의 의미를 파악하기 어렵게 만드는지 구체적으로 설명합니다. it
블록의 완전한 의미를 이해하기 위해 여러 상위 컨텍스트와 let
정의를 추적해야 하는 복잡성을 강조하며, 이는 테스트의 핵심 로직이 파일 전반에 흩어져 있어 ‘Locality of Behaviour’ 원칙을 위반한다고 비판합니다. 이러한 ‘contextivitis’는 테스트를 작성할 때는 쉽지만, 나중에 읽고 디버깅할 때는 ‘탐정 작업’이 되어 ‘읽기 전용’ 테스트 스위트가 될 수 있음을 경고합니다.
이에 대한 대안으로, 저자는 복잡한 RSpec 테스트를 Plain Ruby 코드로 재작성하여 가독성과 이해도가 크게 향상됨을 시연합니다. 불필요한 let
과 before
사용을 지양하고, 테스트 내부에서 필요한 모든 상태 정의를 변수로 직접 포함시키는 ‘독립형(Stand alone)’ 테스트 작성을 제안합니다. 이는 테스트가 특정 설정에만 ‘약하게’ 관련될 때만 let
이나 before
를 사용하고, 핵심 변수와 ‘마법 상수’는 테스트 코드 내부에 명확히 배치하여 테스트의 의도를 분명히 해야 함을 강조합니다. 또한, context
나 describe
는 진정으로 테스트를 그룹화할 필요가 있거나 자연스러운 범주가 존재할 때만 사용해야 한다고 조언합니다. 저자는 자신의 이러한 조언이 betterspecs.org
의 권장 사항과 직접적으로 상반될 수 있음을 인정하며, 이에 대한 추가 논의의 필요성을 제기합니다.