Skip to content

Latest commit

Β 

History

History
59 lines (43 loc) Β· 1.71 KB

development-environment.md

File metadata and controls

59 lines (43 loc) Β· 1.71 KB

개발 ν™˜κ²½ μ„€μ • κ°€μ΄λ“œ

πŸ”§ 개발 ν™˜κ²½ Commands

Make λͺ…λ Ήμ–΄

λͺ…λ Ήμ–΄ μ„€λͺ…
./make generate Demo 앱을 포함해 Xcode ν”„λ‘œμ νŠΈ 생성
./make build clean β†’ install β†’ generate 순차 μ‹€ν–‰
./make install μ˜μ‘΄μ„± μ„€μΉ˜
./make clean ν”„λ‘œμ νŠΈ 정리

Xcode λΉŒλ“œ

# λΉŒλ“œ
xcodebuild -workspace DDDAttendance.xcworkspace -scheme DDDAttendance build

# ν…ŒμŠ€νŠΈ μ‹€ν–‰  
xcodebuild -workspace DDDAttendance.xcworkspace -scheme DDDAttendance test

⚠️ μ€‘μš” κ·œμΉ™

  1. 파일 생성/μ‚­μ œ μ‹œ: λ°˜λ“œμ‹œ ./make generate μ‹€ν–‰
  2. Project.swift μˆ˜μ • μ‹œ: λ°˜λ“œμ‹œ ./make generate μ‹€ν–‰
  3. μ˜μ‘΄μ„± μΆ”κ°€/제거 μ‹œ: ./make install β†’ ./make generate μˆœμ„œλ‘œ μ‹€ν–‰
  4. Tuist glob νŠΉμ„±: generate μ—†μ΄λŠ” Xcode에 μƒˆ 파일이 λ°˜μ˜λ˜μ§€ μ•ŠμŒ

πŸ“š 참고사항

ν…ŒμŠ€νŠΈ νŒ¨ν„΄

// TCA TestStore νŒ¨ν„΄
func testLogin() async {
    let store = TestStore(initialState: LoginFeature.State()) {
        LoginFeature()
    }
    
    await store.send(.loginButtonTapped) {
        $0.isLoading = true
    }
    
    await store.receive(.loginResponse(.success(mockUser))) {
        $0.isLoading = false
        $0.user = mockUser
    }
}

μ„±λŠ₯ 고렀사항

  • TCA State: @ObservableState + Equatable κ΅¬ν˜„μœΌλ‘œ λΆˆν•„μš”ν•œ λ Œλ”λ§ λ°©μ§€
  • Effect μ΅œμ ν™”: .run λ‚΄μ—μ„œ Heavy μž‘μ—… 처리, UI μ—…λ°μ΄νŠΈλŠ” MainActor
  • μ˜μ‘΄μ„± μ£Όμž…: 싱글톀 νŒ¨ν„΄ μ΅œμ†Œν™”, Interface 기반 ν…ŒμŠ€νŠΈ μš©μ΄μ„± 확보

이 κ°€μ΄λ“œλŠ” μ—μ΄μ „νŠΈλ“€μ΄ 개발 ν™˜κ²½ 섀정을 λΆ„μ„ν•˜κ³  μ΅œμ ν™”ν•  λ•Œ μ°Έκ³ ν•˜λŠ” κΈ°μ€€μž…λ‹ˆλ‹€.