gpt4 book ai didi

kotlin - 扩展Mockito验证Kotlin不起作用(在 “kotlin way”中)

转载 作者:行者123 更新时间:2023-12-02 13:06:42 25 4
gpt4 key购买 nike

我想扩展验证以允许检查同一模拟对象上的多个命令,但它不起作用,它可以编译,但在运行时不要在同一对象上运行每个命令。

只是想避免编写更多类似的内容:

Mockito.verify(mockedView).initViews()
Mockito.verify(mockedView).setImage(user.photoUrl)

并像这样写:
Mockito.verify(mockedView){
initViews()
setImage(user.photoUrl)
}

第一次尝试:
@Test
fun onCreate_loadLoginInfo() {
val user = MockUser.user()

presenter.onCreate(mockedView, user)

Mockito.myVerify(mockedView) {
initViews()
setImage(user.photoUrl)
setName(user.name)
setEmail(user.email)
}
}

class Mockito {
companion object
}

fun <T> Mockito.Companion.myVerify(obj: T, func: T.() -> Unit) {
org.mockito.Mockito.verify(obj).func()
}

第二次尝试:
@Test
fun onCreate_loadLoginInfo() {
val user = MockUser.user()

presenter.onCreate(mockedView, user)

Mockito.myVerify(mockedView) {
it.initViews()
it.setImage(user.photoUrl)
it.setName(user.name)
it.setEmail(user.email)
}
}

class Mockito {
companion object
}

fun <T> Mockito.Companion.myVerify(obj: T, func: (T) -> Unit) {
val mock = org.mockito.Mockito.verify(obj)
func(mock)
}

但是这些都不起作用,即使我没有在演示者中调用方法,所有测试都通过了,我该怎么做?

最佳答案

我遇到了同样的问题,并写了Facade around Mockito
我的库允许验证围绕一个模拟对象的几个调用:

val list = mock(MutableList::class)

list.add("String 1")
list.add("String 2")
list.size()

verify(list) {
times(2).add(anyString())
times(1).size()
}

请查看自述文件,也许它可以为您提供帮助

关于kotlin - 扩展Mockito验证Kotlin不起作用(在 “kotlin way”中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35484498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com