forked from mockk/mockk
-
Notifications
You must be signed in to change notification settings - Fork 0
/
MockKRuleTest.kt
85 lines (65 loc) · 1.71 KB
/
MockKRuleTest.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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
@file:Suppress("UNUSED_PARAMETER")
package io.mockk.junit4
import io.mockk.every
import io.mockk.impl.annotations.MockK
import io.mockk.impl.annotations.RelaxedMockK
import io.mockk.impl.annotations.SpyK
import io.mockk.verify
import org.junit.Rule
import org.junit.Test
import kotlin.test.assertEquals
import kotlin.test.assertNull
import kotlin.test.assertTrue
class MockKRuleTest {
@get:Rule
val mockkRule = MockKRule(this)
enum class Direction {
NORTH,
SOUTH,
EAST,
WEST
}
enum class Outcome {
FAILURE,
RECORDED
}
class RelaxedOutcome
class Car {
fun recordTelemetry(speed: Int, direction: Direction, lat: Double, long: Double): Outcome {
return Outcome.FAILURE
}
fun relaxedTest(): RelaxedOutcome? {
return null
}
}
@MockK
private lateinit var car: Car
@RelaxedMockK
private lateinit var relaxedCar: Car
@SpyK
private var carSpy = Car()
@Test
fun injectsValidMockInClass() {
every {
car.recordTelemetry(
speed = more(50),
direction = Direction.NORTH,
lat = any(),
long = any()
)
} returns Outcome.RECORDED
val result = car.recordTelemetry(51, Direction.NORTH, 1.0, 2.0)
assertEquals(Outcome.RECORDED, result)
}
@Test
fun injectsValidRelaxedMockInClass() {
val result = relaxedCar.relaxedTest()
assertTrue(result is RelaxedOutcome)
}
@Test
fun testInjectsValidSpyInClass() {
val result = carSpy.relaxedTest()
assertNull(result)
verify { carSpy.relaxedTest() }
}
}