REDI-100: adopt MockK and rewrite unit tests to use it
Replace the hand-written CharacterRepository fakes in the ViewModel and UseCase unit tests with MockK mocks (coEvery / coVerify). This is a deliberate showcase of MockK and intentionally diverges from the repo's "prefer fakes over mocks" guidance. - Add io.mockk:mockk 1.14.3 to the version catalog and the unit-test bundle; add it explicitly to DomainModuleConventionPlugin (domain does not consume the bundle). - CharacterListViewModelTest: strict mockk, per-page coEvery stubs; the paging/in-flight guards are expressed via coVerify(exactly = ...) and coVerifyOrder instead of fake call counters. - CharacterDetailViewModelTest: relaxed mockk so "missing id" needs no stubbing; explicit coEvery elsewhere. - GetCharactersPageUseCaseTest: mockk + coVerify replaces the inline fake. - Move character()/characterDetails() fixtures to CharacterFixtures.kt and delete FakeCharacterRepository.kt. - NetworkCharacterRepositoryTest stays on Ktor MockEngine (MockK is for Kotlin collaborator interfaces, not the HTTP transport).
This commit is contained in:
@@ -40,6 +40,7 @@ junitJupiter = "5.11.4"
|
||||
junitPlatform = "1.11.4"
|
||||
turbine = "1.2.0"
|
||||
assertk = "0.28.1"
|
||||
mockk = "1.14.3"
|
||||
androidxTestExt = "1.3.0"
|
||||
androidxTestRunner = "1.7.0"
|
||||
androidxEspresso = "3.7.0"
|
||||
@@ -119,6 +120,7 @@ junit-jupiter-engine = { module = "org.junit.jupiter:junit-jupiter-engine", vers
|
||||
junit-platform-launcher = { module = "org.junit.platform:junit-platform-launcher", version.ref = "junitPlatform" }
|
||||
turbine = { module = "app.cash.turbine:turbine", version.ref = "turbine" }
|
||||
assertk = { module = "com.willowtreeapps.assertk:assertk", version.ref = "assertk" }
|
||||
mockk = { module = "io.mockk:mockk", version.ref = "mockk" }
|
||||
androidx-test-runner = { module = "androidx.test:runner", version.ref = "androidxTestRunner" }
|
||||
androidx-test-ext-junit = { module = "androidx.test.ext:junit", version.ref = "androidxTestExt" }
|
||||
androidx-test-espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "androidxEspresso" }
|
||||
@@ -142,7 +144,7 @@ ktor = [
|
||||
]
|
||||
lifecycle-compose = ["androidx-lifecycle-runtime-compose", "androidx-lifecycle-viewmodel-compose"]
|
||||
views = ["androidx-appcompat", "material", "androidx-recyclerview", "androidx-fragment-ktx"]
|
||||
unit-test = ["junit-jupiter-api", "kotlinx-coroutines-test", "turbine", "assertk"]
|
||||
unit-test = ["junit-jupiter-api", "kotlinx-coroutines-test", "turbine", "assertk", "mockk"]
|
||||
# Instrumented Compose UI test (androidTest): ComposeTestRule + AndroidJUnit4 runner.
|
||||
# espresso-core/runner are pinned to current versions: Compose's test rule drives Espresso's
|
||||
# onIdle, and the transitive espresso 3.5.0 calls InputManager.getInstance() (removed on API 34+),
|
||||
|
||||
Reference in New Issue
Block a user