forked from mockk/mockk
-
Notifications
You must be signed in to change notification settings - Fork 0
/
JvmConstructorOverridenTest.kt
54 lines (39 loc) · 1.58 KB
/
JvmConstructorOverridenTest.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
package io.mockk.it
import io.mockk.clearAllMocks
import io.mockk.mockk
import io.mockk.unmockkAll
import org.junit.jupiter.api.Test
/**
* The mocked ::class.java constructor is overriden in the JVM.
* Verifies issue #129.
*/
@Suppress("UNUSED_VARIABLE")
class JvmConstructorOverridenTest {
@Test
fun testConstructorGetParametersMocked() {
var parameters = DataClass::class.java.constructors[0].parameters
assert(parameters.map { it.type }.contains(String::class.java))
assert(parameters.map { it.type }.contains(Int::class.java))
// inject a mockk object to alter native constructor.getParameters
val instance: DataClass = mockk()
clearAllMocks()
unmockkAll()
parameters = DataClass::class.java.constructors[0].parameters
assert(parameters.map { it.type }.contains(String::class.java))
assert(parameters.map { it.type }.contains(Int::class.java))
}
@Test
fun testConstructorEqualityAfterClearMocks() {
val javaClass = DataClass::class.java
val constructor = DataClass::class.java.constructors[0]
assert(javaClass.constructors.size == 1)
// inject a mockk object to alter native constructor.getParameters
val instance: DataClass = mockk()
clearAllMocks()
unmockkAll()
assert(javaClass === DataClass::class.java)
assert(constructor.parameterCount == DataClass::class.java.constructors[0].parameterCount)
assert(constructor == DataClass::class.java.constructors[0])
}
}
data class DataClass(val name: String, val age: Int)