forked from mockk/mockk
/
SealedInterfaceTest.kt
49 lines (34 loc) · 943 Bytes
/
SealedInterfaceTest.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package io.mockk.it
import io.mockk.every
import io.mockk.mockk
import kotlin.test.Test
import kotlin.test.assertEquals
class SealedInterfaceTest {
@Test
fun serviceReturnsSealedClassImpl() {
val factory = mockk<Factory> {
every { create() } returns Leaf(1)
}
val result = factory.create()
assertEquals(Leaf(1), result)
}
@Test
fun serviceAnswersSealedClassImpl() {
val factory = mockk<Factory> {
every { create() } answers { Leaf(1) }
}
val result = factory.create()
assertEquals(Leaf(1), result)
}
companion object {
sealed interface Node
data class Root(val id: Int) : Node
data class Leaf(val id: Int) : Node
interface Factory {
fun create(): Node
}
class FactoryImpl : Factory {
override fun create(): Node = Root(0)
}
}
}