几乎没有尝试检查json是否有包含两项的数组:
{
"sections" : [
{
"name" : "A",
"description" : "aaa"
},
{
"name" : "B",
"description" : "bbb"
}
]
}
但是只带了
.andExpect(jsonPath("$.sections[?(@.name=='A' && @.description=='aaa')]", hasSize(1)))
有没有办法用hasItem/has property/containinaryorder把这个转换成Harmcrest匹配器?
我认为将Json数组反序列化为节
对象列表将很容易使用Hamcrest匹配器。您必须重写<code>equals()对象是否在创建的<code>段
Section.java
public class Section {
private String name;
private String description;
public Section(String name, String description) {
this.name = name;
this.description = description;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (obj.getClass() != this.getClass()) {
return false;
}
final Section other = (Section) obj;
if ((this.name == null) ? (other.name != null) : !this.name.equals(other.name)) {
return false;
}
if (!this.description.equals(other.description)) {
return false;
}
return true;
}
}
然后使用您喜欢的任何Hamcrest Matcher。
RestAssured.baseURI="https://run.mocky.io/v3/bc929050-35ba-42a1-86b1-58f3fd1ead83";
List<Section> sections = RestAssured.given()
.when()
.get()
.then()
.extract().jsonPath().getList("sections", Section.class);
Section sectionA = new Section("A", "aaa");
Section sectionB = new Section("B", "bbb");
List<Section> sectionList = new ArrayList<>();
sectionList.add(sectionA);
sectionList.add(sectionB);
assertThat(sections, hasItem(sectionA)); // pass
assertThat(sections, hasSize(2)); // pass
assertThat(sections, hasItem(hasProperty("name", equalTo("B")))); // pass
assertThat(sections, equalTo(sectionList)); // pass
assertThat(sections, containsInAnyOrder(sectionList.toArray())); // pass
我正在为我的 REST API 控制器编写测试,我需要检查返回的 对象中的 值,请参阅此测试方法: 但是测试产生了这个错误: 似乎ID被正确返回,但被序列化为不同的结构。 我的代码有什么问题?
问题内容: 我正在使用/ 来获取HTTP响应中的响应代码。返回1,但是尝试获取异常!知道为什么吗? 这是代码: 这是输出: 问题答案: 总是会创建一个新的匹配器,因此您需要再次致电。 尝试:
我有一个API,它返回一个将在UI中显示的JSON对象。对象中字段的顺序很重要,因为UI希望按该顺序显示字段。我想编写一个单元测试来确保对象中字段的顺序是正确的。我的API响应如下所示: 使用spring boot的< code>MockMvc库,我想编写一个这样的表达式来验证字段是否按顺序返回: 显然,上述方法不起作用,但我不确定我应该使用哪种类型的来尝试并验证字段是否正确。
问题内容: 我有一个这样的对象数组: 我知道我可以找到匹配的项目,如下所示: 但是现在如何将其从原始文件中删除?我希望可以以某种方式返回索引,以便可以使用。或者更好的是,我想做这样的事情: 有任何想法吗? 问题答案: 您不了解的是Array是一个结构,因此 是一个值类型 。它不能像类实例那样在适当位置进行突变。因此,即使您扩展Array来编写一个变异方法,您也将始终在幕后创建一个新的数组。 因此,
问题内容: 我有多个带有字符串值的数组,我想比较它们,只保留 所有 它们之间相同的匹配结果。 给出以下示例代码: 我想产生以下数组,其中包含来自所有给定数组的匹配项: 我知道我可以将所有数组组合在一起,但这只是给我一个包含所有内容以及重复项的数组。是否可以轻松完成此操作而无需诸如underscore.js之类的库的开销? 编辑 我想我应该提到的是,可能存在未知数量的数组,我只是以3为例。 问题答案
我有多个带有字符串值的数组,我想对它们进行比较,并且只保留它们之间相同的匹配结果。 给定此示例代码: 我想生成以下数组,它包含所有给定数组的匹配项: 编辑我想我应该提到可能有未知数量的数组,我只是使用3作为一个例子。