unit-testing - 尝试使用 Argument Captor 在 Kotlin 中捕获参数时出错
问题描述
我无法在 Kotlin 中使用 captor 参数。
服务等级:
class ClassService(private val clientFeign: ClientFeign) {
fun startIntegration() {
val object: ObjectVO = createObject()
val objectCreated = clientFeign.createObject(object)
return objectCreated
}
}
测试类别:
import io.mockk.impl.annotations.MockK
import io.mockk.junit5.MockKExtension
import com.nhaarman.mockitokotlin2.argumentCaptor
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
@ExtendWith(MockKExtension::class)
@DisplayName("Test")
class ServiceTest {
@MockK
private lateinit var clientFeign: ClientFeign
private lateinit var classService: ClassService
@Test
fun `should create client`() {
val obejctVO = ObjectVO(.....)
every { clientFeign.createObject(any()) }
returns objectVO
classService.startIntegration()
var objectCaptor = com.nhaarman.mockitokotlin2.argumentCaptor<ObjectVO()
verify(exactly = 1) {
clientFeign.createObject(
objectCaptor.capture(),
)
}
}
}
我遇到以下错误:
java.lang.AssertionError:验证失败:调用 1 of 1:ClientFeign(clientFeign#6).createClient(null()))。只发生了一次对 ClientFeign(clientFeign#6)/createClient(objectVO) 的匹配调用,但参数不匹配:[0]:参数:ObjectVO(id=null, name=TESTE, poEmail=teste@gmail.com, displayName=测试,数字=4),匹配器:null(),结果:
我不明白为什么这些论点不匹配。
解决方案
推荐阅读
- python - 无法获得所需的星形图案。我究竟做错了什么?
- javascript - 无法向 Google 表格添加自定义菜单
- r - 设置循环以查找数据框中的唯一值,将它们求和并将它们添加到数据框中的新行
- c - 关于块范围链接,没有错误,没有警告,但结果很惊讶,我不知道为什么
- java - 服务器和客户端程序因未知原因停止
- mongodb - 如何在 mongodb 聚合中按顺序获取计数?
- javascript - Onclick 按钮以在 XPages 中导出 excel
- sql-server - 在 SQL 中加入 2 个表并获取父记录的值,并将父维度值之一替换为 sql 中的所有子维度
- scala - 如何在功能上处理日志记录副作用
- javascript - 使用 React 在自定义文本字段上使用本地存储实现自动保存