当前位置: 首页 > 知识库问答 >
问题:

JSON数组与Hamcrest的重复项目

商麒
2023-03-14

作为后续问题,我的问题在处理数组与hamcrest和放心

如何将hamcrest与Restassed一起使用,以便进行测试

{
    "mobilenum": "+6519829340",
    "firstname": "Allen",
    "lastname": "Edwards",
    "location": "Singapore"
    "outbound": "YES"
    "count" : 15
}, 
{
    "mobilenum": "+6519829340",
    "firstname": "Allen",
    "lastname": "Edwards",
    "location": "Singapore"
    "outbound": "NO"
    "count" : 9
}

存在两种类型的数据,一种包含mobilenum、firstname等,其出站值等于yes,另一种为no。

这就像有两个对象具有相同的属性,但出站属性除外。

约翰在上一个问题中的回答是这样的:

 .root("smsentries.find { it.mobilenum == '%s' }").    
 .body("firstname", withArgs("+6519829340"), equalTo("Allen")
 .body("lastname", withArgs("+6519829340"), equalTo("Edwards").
 .body("firstname", withArgs("+12345678"), equalTo("John")
 .body("lastname", withArgs("+12345678"), equalTo("Doe").

我不知道如何添加像Args(“艾伦”)和(“爱德华兹”)这样的东西。equalTo(“出站”)

我希望发生的事情是这样的:

 for (Map.Entry<String,JsonElement> entry : o.entrySet()) {
        if (entry.getKey().equals("smsentries")) {
        JsonArray array = entry.getValue().getAsJsonArray();
        for (JsonElement elementJSON : array) {
            SMSEntry smsEntry = mapper.readValue(elementJSON.toString(), SMSEntry.class);
                if (smsEntry.getMobilenum().equals("+6519829340") && 
                        smsEntry.getOutbound().equals("YES")) {
                            assertThat(smsEntry.getLocation(), equalTo("Singapore"));
                            assertThat(smsEntry.getCount(), equalTo(15));
                        }
            }
        }
    }

如果我的手机号码等于6519829340,并且是出站的,则断言该位置在新加坡,并且计数为15。

共有1个答案

臧亦
2023-03-14

如果我正确理解你(和用户列表(?)在前面的问题中被称为smentries),您可以这样做:

.root("smsentries.findAll { it.mobilenum == '%s' }").    
.body("firstname", withArgs("+6519829340"), contains("Allen", "Allen"))
.body("lastname", withArgs("+6519829340"), contains("Edwards", "Edwards"))
.body("outbound", withArgs("+6519829340"), containsInAnyOrder("YES", "NO"))
// Additional body matchers

澄清后的更新

如果我的手机号码等于6519829340,并且是出站的,则断言该位置在新加坡,并且计数为15。

您可以这样做:

.root("smsentries.find { it.mobilenum == '+6519829340' && it.outbound == 'YES'}").    
.body("location", equalTo("Singapore"))
.body("count", equalTo(9))
 类似资料:
  • 我有一个数组。如何按类型、名称和大小以及递增量找到双重许可。增加数量后删除相同的。

  • 之间有区别吗 和 ? 两者都起作用,结果完全相同。哪一个更快或更好?有推荐的款式指南吗?

  • 我有如下的JSON数组: 我还创建了如下用户类: 我的计划是将incomming JSON数组强制转换为User数组。在JSON中,我将角色作为整数。我的课上有管理和驱动布尔字段。这是ngModel中复选框所需要的。

  • 问题内容: 我有一个数组,正在寻找重复项。 但是,当没有重复项时,此代码不起作用。为什么? 问题答案: On the nose answer.. 编辑后切换回原来的位置,因为我在你正在使用的地方阅读过,最初的问题尚不清楚。还要设置,以将执行时间减半,但仍为O(n 2)。 A faster (in the limit) way 这是一种基于哈希的方法。你需要为自动装箱付款,但是它是O(n)而不是O(

  • 我做错了什么,怎么修复?

  • 我想删除double[]数组中的重复项。不幸的是,我不能使用ArrayList或其他任何东西,它必须是“普通”双数组。我试图使用类数组的binarySearch()方法,但找不到一个很好的解决方案,因为我不仅要搜索,还要删除重复项。那么,每次删除这样的副本时,我都必须缩短长度。 这个问题有什么解决办法吗?