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:
@@ -20,6 +20,8 @@ class DomainModuleConventionPlugin : Plugin<Project> {
|
||||
add("implementation", libs.findLibrary("kotlinx-coroutines-core").get())
|
||||
add("testImplementation", libs.findLibrary("junit-jupiter-api").get())
|
||||
add("testImplementation", libs.findLibrary("assertk").get())
|
||||
// Domain doesn't consume the `unit-test` bundle, so MockK is added explicitly here.
|
||||
add("testImplementation", libs.findLibrary("mockk").get())
|
||||
add("testRuntimeOnly", libs.findLibrary("junit-jupiter-engine").get())
|
||||
// Gradle 9 dropped the bundled launcher; JUnit 5 won't start without it.
|
||||
add("testRuntimeOnly", libs.findLibrary("junit-platform-launcher").get())
|
||||
|
||||
Reference in New Issue
Block a user