아키텍처객관식기초Walmart출처 tejaswinimr.medium.com ↗싱글톤 단위 테스트AnalyticsManager.shared처럼 코드 곳곳에서 직접 참조하는 싱글톤이 있는 코드베이스에서, 이를 쓰는 뷰모델을 단위 테스트하려 합니다. 올바른 접근을 모두 고르세요.복수 선택 가능1보기 1.뷰모델이 AnalyticsManager.shared를 직접 부르지 않도록 protocol AnalyticsTracking을 두고 생성자로 주입받게 바꾼 뒤, 테스트에서는 호출을 기록하는 스파이를 넣는다2보기 2.당장 모든 호출부를 바꾸기 어렵다면 static var shared(또는 static var current)로 교체 가능한 진입점을 만들어 테스트 setUp에서 대체하고 tearDown에서 원래 인스턴스로 복원한다3보기 3.테스트 간 상태 오염을 막기 위해 싱글톤에 reset() 메서드를 추가하는 것은 프로덕션 코드를 테스트 때문에 바꾸는 것이므로 절대 금지된다4보기 4.XCTest는 테스트 메서드마다 프로세스를 새로 띄우므로 싱글톤 상태는 테스트마다 자동으로 초기화된다5보기 5.@testable import로 내부 접근이 가능하므로 이니셜라이저를 private이 아닌 internal로 두면 테스트에서 별도 인스턴스를 만들어 검증할 수 있다채점하기