멘토링 진행 (2023-01-15 오후 9시 부터, 1시간 진행)
•
@ViewBuilder 에 대해 설명했습니다.
•
디자인 시스템이라는 개념이 탄생한 이유, 보통 어떻게 활용되는지 이야기했습니다.
•
프로젝트에 테스트 코드를 추가하는 법을 얘기했습니다. (타겟 추가 + Unit Testing)
•
테스트 코드는 프로덕션 코드를 모릅니다. 그래서 @testable import 를 해줘야 합니다.
•
테스트의 3요소 (Given-When-Then) 에 대해 이야기했습니다.
•
테스트 메서드는 어떻게 만들어야 하는지 얘기했습니다. 메서드의 이름은 반드시 “test” 라는 단어로 시작해야 합니다.
•
그리고 보통 snake_case 방식으로 메서드 이름을 짓습니다. 영어로 짓기도 하고 한글로 하기도 하고, 회사마다 다릅니다.
◦
func test_addNumber_success()
◦
func test_fetch_failure()
•
과제 전형 하실 때, 요구사항에 없더라도 테스트 코드 넣으면 아주 좋습니다.
•
테스트 코드는 사실 일반적인 메서드 보다, 네트워크 테스트할 때 사용하면 좋습니다.
•
mock data 또는 mock json 을 하나 가져다두고, 그걸 디코딩하는 걸 검증해보세요.
•
그리고 테스트 코드를 잘 쓰기 위한, 소위 ‘testable 한 코드’를 만들기 위해서는, 스유에서 어떤 디자인 패턴을 채택해야 할지에 대해서 얘기했습니다.
•
SwiftUI 에서 View 안에 로직이 있으면 테스트가 어렵다는 점을 직접 보여주고
•
뷰모델(ObservableObject 클래스)로 분리하면 왜 편리해지는 지 이야기했습니다.
•
프로퍼티를 변경하는 건 메서드의 역할이고, 직접 접근해서 프로퍼티를 변경할 수 있게 ‘열어두면’ 안 됩니다.
•
근데 완전히 private 으로 숨겨두면, 테스트할 때 접근을 할 수가 없습니다.
•
이때 사용하는 게 private(set) 접근제어입니다.