如何解决测试使用Mockito模拟时如何解决NullpointerException?
如何解决NullpointerException nodeInfoList.map {it.legalIdentities.last()。name}其中nodeInfoList类型为 ##待测试的服务代码## #我编写的测试功能# 的情况,同时测试使用Mockito模拟的情况?
val nodeInfoList=dataService.proxy.networkMapSnapshot()
val nodeNameList =nodeInfoList.map { it.legalIdentities.last().name }
ownerMap.map {
if(nodeNameList.contains(CordaX500Name.parse(it.value))) {
ownerList.add(it.key)
}
}
maintanenceMap.map {
if(nodeNameList.contains(CordaX500Name.parse(it.value))) {
maintainerList.add(it.key)
}
}
response["ownerList"] = ownerList
response["maintainerList"] = maintainerList
return ResponseEntity.status(200).body(response)
}
@Test(timeout = 300000)
fun ` get drop down data Test`() {
val cordaRPCOps = Mockito.mock(CordaRPCOps::class.java)
val listNodeInfoMock = Mockito.mock(listOf<net.corda.core.node.NodeInfo>()::class.java)
val singleMockNodeInfo = Mockito.mock(net.corda.core.node.NodeInfo::class.java)
val x500Name = CordaX500Name.parse("O=Building Owner1,L=Tokyo,C=JP")
val list500Mock2 = listOf(x500Name)
Mockito.`when`(cordaDataService!!.proxy).thenReturn(cordaRPCOps)
Mockito.`when`(cordaRPCOps.networkMapSnapshot()).thenReturn(listNodeInfoMock)
Mockito.`when`(listNodeInfoMock.map { it.legalIdentities.last().name }).thenReturn(list500Mock2)
Mockito.`when`(list500Mock2.contains(CordaX500Name.parse("O=Building Owner1,C=JP"))).thenReturn(true)
val dropDownData = staticDataService!!.getDropDownData()
println("dropDownData " + dropDownData)
}
解决方法
我认为这取决于测试的目的,是否希望该列表为空以及是否要对其进行测试。通常,有许多方法可以使用Mockito处理空列表,例如,您可以查看此other post,并查看最适合您的目的的
。 , fun ` list data Test`() {
val x500Name = CordaX500Name.parse("O=Maintenance Operator1,L=Tokyo,C=JP")
val partyMock = Mockito.mock(Party::class.java)
Mockito.`when`(cordaDataService!!.proxy).thenReturn(proxyMock)
Mockito.`when`(proxyMock!!.networkMapSnapshot()).thenReturn(listNodeInfoMock)
Mockito.`when`(listNodeInfoMock!!.iterator()).thenReturn(nodeInfoIterator)
Mockito.`when`(nodeInfoIterator!!.hasNext()).thenReturn(true,false)
Mockito.`when`(nodeInfoIterator.next()).thenReturn(nodeInfoMock).thenReturn(nodeInfoMock2)
Mockito.`when`(nodeInfoMock!!.legalIdentities ).thenReturn(listOf(partyMock))
Mockito.`when`(nodeInfoMock.legalIdentities.last().name ).thenReturn(x500Name)
Mockito.`when`(list500Mock2!!.contains(x500Name)).thenReturn(true)
}
这样重写测试功能。 Nullpointer异常已解决。在此处使用的某些模拟对象使用@Mock。
@InjectMocks
private val staticDataService: StaticDataService? = null
@Mock
private val cordaDataService: CordaDataService? = null
@Mock
private val proxyMock: CordaRPCOps? = null
@Mock
private val listNodeInfoMock: List<NodeInfo>? = null
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。