У меня есть некоторые проблемы с Mockito и заглушением методов, которые используют класс в качестве параметра в Kotlin.
У меня есть несколько классов, определенных следующим образом:
open interface interfaceFile {
fun someFun(param1: String): String
}
abstact class abstractClass {
abstract val variable1: RandomType
open fun<T> getObject(param1: String, param2: Class<T>, vararg param3: Any): T? {
doSomeStuff()
}
open class concreteClass @Autowired constructor(
override val variable1: RandomType
): abstractClass(), interfaceFile {
override fun someFun(param1: String): String {
return getObject(param1, string::Class.java)!!
}
Затем я попытался использовать mockito, чтобы смоделировать функцию getObject
и проверить ее следующим образом:
fun setUp() {
MockitoAnnotations.initMock(this)
testObject = mock(concreteClass::class.java)
}
fun testSomeFun() {
`when`(testObject!!.getObject("string1", String::class.java)).thenReturn("Mocked")
val actualResponse = testObject!!.someFun("string1")
assertEquals("message", "Mocked", actualResponse)
}
Короче говоря, concreteClass.someFun
вызовет abstractClass.getObject
, который вызовет doSomeStuff
.Но во время тестирования я хочу заглушить abstractClass.getObject
, чтобы просто вернуться.Но текущее поведение, похоже, таково, что вместо этого я всегда получаю null
.
Я упростил его до того момента, когда он принимает один строковый параметр, а затем заглушает его, но кажется, что когда я представляюТип класса как параметр перестает работать.
Похоже, что моя проблема связана с неправильным сопоставлением аргументов в моем вызове when
, но я не могу понять, что с ним не так, поскольку я дажевведите точные значения вместо использования ArgumentMatchers.Любые предложения будут с благодарностью.