У меня есть класс A
, подобный следующему:
class A(b: B) : B by b // Note the implementation of interface B by delegation to parameter b
interface B {
fun memberFunction() {}
}
fun B.extensionFunction() {}
Теперь я хочу убедиться, что вызывается B#extensionFunction
.Как мне это сделать?
Я могу проверить B#memberFunction
примерно так:
class BImpl : B // Dummy implementation needed to instantiate interface B
@Test
fun `memberFunction can be verified`() {
val bSpy = spyk<B>(BImpl)
val a = A(bSpy)
a.memberFunction()
verify { bSpy.memberFunction() }
}
Однако тот же тест для B#extensionFunction
не сработает;вместо этого я получаю java.lang.AssertionError
.Проверка не пройдена, потому что звонок не состоялся.(Обратите внимание, что вы должны использовать статический макет (используя функцию mockkStatic
), чтобы иметь возможность проверить функцию расширения.)
Для справки, используемые библиотеки:
- org.jetbrains.kotlin: kotlin-stdlib-jdk8: 1.3.11
- junit: junit: 4.12
- .