Daily iOS
테스트

싱글톤 단위 테스트

AuthManager.shared를 코드 곳곳에서 직접 부르는 앱이 있습니다. 이 싱글톤에 의존하는 코드를 단위 테스트하려면 어떻게 하겠습니까?

final class AuthManager {
    static let shared = AuthManager()
    private(set) var token: String?
    func login(_ id: String) async throws { token = try await API.login(id) }
}
면접관은 이 답을 어떻게 들을까요? 넘어갈지, 더 물어볼지, 떨어뜨릴지 알려 주고, 걸리는 문장은 콕 집어 줘요. 점수는 그대로예요.
짧은 답 보기

호출부가 싱글톤을 직접 쓰지 않고 AuthProviding 프로토콜 타입을 주입받게 바꾸고, 기본 인자로 .shared를 넘겨 기존 코드를 깨지 않는다. 테스트에서만 FakeAuth를 넣는다.

받은 질문 공유