Skip to content

test(core): Auth·User·PhotoUpload·UserProfile fake 17벌을 core:domain testFixtures 4벌로 #1041

Closed

Description

@OnlyReadOneBook

#1030 의 core/domain 몫이다. 4종 17벌 → 4벌.

계약 벌 수
AuthRepository 6
UserRepository 5
PhotoUploadRepository 4
UserProfileRepository 2

주의 — 소비처가 가장 넓다

fake 가 걸쳐 있는 파일 11개가 core/data·core/network·feature/onboarding·feature/home·feature/timeletter·feature/mindrecord·app/androidTest 에 퍼져 있다. 다른 배치보다 배선(testImplementation(testFixtures(projects.core.domain)))을 넣을 모듈이 많다.

app/src/androidTest/.../SettingAccountSecurityAndroidTest.kt
app/src/androidTest/.../SettingCompletionAndroidTest.kt
app/src/androidTest/.../TimeLetterLifecycleAndroidTest.kt
app/src/androidTest/.../TimeLetterMindRecordCompletionAndroidTest.kt
app/src/androidTest/.../test/TestFakes.kt
core/data/src/test/.../repoimpl/UserRepositoryImplTest.kt
core/network/src/test/.../FakeAuthRepository.kt
feature/home/presentation/src/test/.../HomeTabViewModelTest.kt
feature/mindrecord/presentation/src/test/.../DailyQuestionWriteViewModelTest.kt
feature/onboarding/presentation/src/test/.../login/LoginViewModelTest.kt
feature/onboarding/presentation/src/test/.../signup/SignUpViewModelSubmitTest.kt
feature/timeletter/presentation/src/test/.../TimeLetterWriteViewModelTest.kt

규약

픽스처 규약은 #1030 에 정본이 있고 첫 적용은 #1040 이다. 그대로 따른다.

  • 기본 동작은 메모리 저장소, 호출은 전부 기록해 테스트가 사후에 단언한다.
  • 저장소 동작으로 표현 못 하는 시나리오(경합용 게이트, 스크립트된 실패)는 onX 람다로 갈아끼운다.
  • "이 시나리오에서 호출되면 안 됨" 은 strict() + unexpectedCall(...) 로 옮긴다. 기본 동작이 관대해져 경계가 사라지지 않게 한다.
  • 스크립트 큐는 픽스처에 넣지 않는다 — 호출부에서 ArrayDeque 를 들고 onX 로 물린다.
  • 단언 자체는 바꾸지 않는다. 기록 접근자 이름이 달라지는 것까지만 허용하고, 의미가 바뀌어야 한다면 별건으로 분리한다.

완료 기준

  • 이 모듈의 계약별 fake 가 src/testFixtures 정본 1벌(+시나리오 파라미터)로 접힌다.
  • 계약에 메서드를 추가하면 :<모듈>:compileDebugTestFixturesKotlin 이 실패하는 것을 실측한다.
  • :koverXmlReportCi :konsist:test :app:compileDebugAndroidTestKotlin ktlintCheck 통과.

Metadata

Metadata

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions