Skip to content

Commit c940e3c

Browse files
committed
Added Mokkery example.
1 parent 643ecda commit c940e3c

File tree

7 files changed

+72
-0
lines changed

7 files changed

+72
-0
lines changed

build-logic/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,5 @@ dependencies {
1616
implementation(libs.jvm.dependency.conflict.resolution.gradle.plugin.dependency)
1717
implementation(libs.kotlin.gradle.plugin.dependency)
1818
implementation(libs.ksp.gradle.plugin.dependency)
19+
implementation(libs.mokkery.gradle.plugin.dependency)
1920
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
plugins {
2+
kotlin("jvm")
3+
// Version catalog type-safe accessors and extension not yet available in
4+
// plugins block of precompiled script plugins:
5+
// https://github.com/gradle/gradle/issues/15383
6+
// alias(libs.plugins.mokkery.gradle.plugin)
7+
id("dev.mokkery")
8+
}

gradle/libs.versions.toml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ ksp = "2.1.10-1.0.29" # Must match Kotlin version above.
1818
mockito = "5.15.2"
1919
mockito-kotlin = "2.2.0"
2020
mockk = "1.13.16"
21+
mokkery = "2.6.1"
2122
org-json = "20250107"
2223
slf4j = "2.0.16"
2324
versions-gradle-plugin = "0.52.0"
@@ -170,6 +171,14 @@ version.ref = "mockk"
170171
module = "io.mockk:mockk-dsl-jvm"
171172
version.ref = "mockk"
172173

174+
[libraries.mokkery-core]
175+
module = "dev.mokkery:mokkery-core"
176+
version.ref = "mokkery"
177+
178+
[libraries.mokkery-gradle-plugin-dependency]
179+
module = "dev.mokkery:mokkery-gradle"
180+
version.ref = "mokkery"
181+
173182
[libraries.org-json]
174183
module = "org.json:json"
175184
version.ref = "org-json"
@@ -232,6 +241,10 @@ version.ref = "jvm-dependency-conflict-resolution"
232241
id = "org.jetbrains.kotlin.jvm"
233242
version.ref = "kotlin"
234243

244+
[plugins.mokkery-gradle-plugin]
245+
id = "dev.mokkery"
246+
version.ref = "mokkery"
247+
235248
[plugins.versions-gradle-plugin]
236249
id = "com.github.ben-manes.versions"
237250
version.ref = "versions-gradle-plugin"

platforms/test-platform/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ dependencies {
1717
api(libs.equalsverifier)
1818
api(libs.mockito)
1919
api(libs.mockito.kotlin)
20+
api(libs.mokkery.core)
2021
api(libs.bundles.mockk.jvm)
2122
}
2223
}

settings.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,5 @@ include("subprojects:ksp-builder-generator:processor")
5050
include("subprojects:ksp-builder-generator:processor:test-project")
5151
include("subprojects:sorting-in-kotlin")
5252
include("subprojects:tdd-in-kotlin")
53+
include("subprojects:testing-with-mokkery")
5354
include("subprojects:typed-errors-in-kotlin")
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
plugins {
2+
id("org.sdkotlin.buildlogic.kotlin-project")
3+
id("org.sdkotlin.buildlogic.test.unit-test-suite")
4+
id("org.sdkotlin.buildlogic.mokkery-project")
5+
}
6+
7+
dependencies {
8+
9+
testImplementation(platform("org.sdkotlin.platforms:test-platform"))
10+
11+
testImplementation(libs.mokkery.core)
12+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package org.sdkotlin.testing.mokkery
2+
3+
import dev.mokkery.answering.returns
4+
import dev.mokkery.every
5+
import dev.mokkery.mock
6+
import org.assertj.core.api.Assertions.assertThat
7+
import org.junit.jupiter.api.Test
8+
9+
interface ValueClassSuperType
10+
11+
@JvmInline
12+
value class ValueClass(val s: String) : ValueClassSuperType
13+
14+
interface DataClassSuperType {
15+
val v: ValueClassSuperType
16+
}
17+
18+
@Suppress("unused") // Not mockable by Mokkery unless all-opened.
19+
data class DataClass(
20+
override val v: ValueClassSuperType,
21+
) : DataClassSuperType
22+
23+
class MokkeryValueClassParameterTest {
24+
25+
@Test
26+
fun `test value class parameter`() {
27+
28+
val testValue = ValueClass("testing")
29+
30+
val mock = mock<DataClassSuperType> {
31+
every { v } returns testValue
32+
}
33+
34+
assertThat(mock.v).isEqualTo(testValue)
35+
}
36+
}

0 commit comments

Comments
 (0)