Daily iOS
테스트

뷰모델 테스트

다음 뷰모델의 load()를 테스트한다면 어떤 케이스를 검증하겠습니까?

@MainActor @Observable
final class FeedViewModel {
    enum State { case idle, loading, loaded([Post]), failed(String) }
    private(set) var state: State = .idle
    private let repo: PostRepository
    init(repo: PostRepository) { self.repo = repo }
    func load() async {
        state = .loading
        do { state = .loaded(try await repo.fetch()) }
        catch { state = .failed(error.localizedDescription) }
    }
}
면접관은 이 답을 어떻게 들을까요? 넘어갈지, 더 물어볼지, 떨어뜨릴지 알려 주고, 걸리는 문장은 콕 집어 줘요. 점수는 그대로예요.
짧은 답 보기

Stub 저장소를 주입해 성공(loaded에 데이터), 실패(failed 메시지), 빈 배열(loaded([])), 호출 직후 로딩 상태 전이를 각각 검증한다. 에러·빈 응답이 실제 버그가 몰리는 곳이라 성공만 보면 부족하다.

받은 질문 공유