我正在使用Kotlin进行单元测试,并且无法迭代测试用例中的对象列表,请检查下面的代码,
@Test
@WithMockOAuth(siteId = "5698965", subPermissions = [SubPermission.GETD])
fun `get fee zero`() {
val body = """
{
"newMessage": {
"call": true,
"callMessatgeCount": 3,
"discounted": 2,
"NewFees": 4.99,
"Id" : "extra SIM Business"
}
}
""".trimIndent()
this.server.expect(requestTo("${integrationClientProperties.url}/main/0767777777/register/"))
.andRespond(withSuccess(body, MediaType.APPLICATION_JSON_UTF8))
assertThat(service.getValues("0767777777"))
.hasSize(3)
.first()
.hasFieldOrPropertyWithValue("callMessatgeCount", 3)
.hasFieldOrPropertyWithValue("NewFees", BigDecimal.ZERO)
this.server.verify()
}
以上,我可以检查hasFieldOrPropertyWithValue
中的first()
元素,作为hasSize(3)
,我需要检查同一{{1 }}方法。
对象列表如下
List of Objects
注意:我尝试TestCase
使用多个测试用例检查对象列表。
已更新
库” ListValue:[
{
"newMessage": {
"call": true,
"callMessatgeCount": 3,
"discounted": 2,
"NewFees": 4.99,
"Id" : "extra SIM Business"
},
{
"newMessage": {
"call": true,
"callMessatgeCount": 3,
"discounted": 2,
"NewFees": 0,
"Id" : "extra SIM Business"
},
{
"newMessage": {
"call": true,
"callMessatgeCount": 3,
"discounted": 2,
"NewFees": 4.99,
"Id" : "extra SIM Business"
}
]
,并支持element(index)
答案 0 :(得分:0)
假设您正在使用方法名称中的AssertJ,并且具有Java-8支持的版本(即3.5+),则可以找到allSatisfy
method:
验证所有元素均满足以消费者表示的给定要求。
这对于在元素上执行一组断言很有用。
在文档中,类似以下内容的方法应该可以使用
assertThat(service.getValues("0767777777"))
.hasSize(3)
.allMatch { assertThat(it)
.hasFieldOrPropertyWithValue("callMessatgeCount", 3)
.hasFieldOrPropertyWithValue("NewFees", BigDecimal.ZERO)
}
您还可以研究Kotlin特定的库(尤其是如果您需要编译到JVM 6)。