有没有办法比较子域的值和hamcrest?
class Obj{
NestedObj nestedObj;
}
class NestedObj{
String wantedProperty;
}
我有一个List<Obj>
个objs,我想测试一下Objs
所有wantedProperty
的值为List<Obj> objs = new ArrayList<Obj>();
Obj obj = new Obj();
NestedObj nestedObj = new NestedObj();
nestedObj.setWantedProperty("wanted");
obj.setNestedObj(nestedObj);
objs.add(obj);
assertThat(objs, hasItems(Matchers.<Obj>hasProperty("nestedObj.wantedProperty", hasValue("wanted"))));
&#34;想要&#34;:
{{1}}
但是nestedObj.wantedProperty不起作用。
如果有可能,我怎样才能让它发挥作用?
答案 0 :(得分:2)
尝试这样的事情
assertThat(objs, hasItems(Matchers.<Obj>hasProperty("nestedObj", Matchers.<NestedObj>hasProperty("wantedProperty",equalTo("wanted")))));
答案 1 :(得分:1)
似乎您所需的功能可以表示如下
List<Obj> objs= .........; //get desired list
Matcher<NestedObj> nestedObjMatcher = hasProperty("wantedProperty", is("wanted"));
Matcher<Obj> objMatcher = hasProperty("nestedObj", nestedObjMatcher);
assertThat(objs, hasItem(objMatcher));
我在这里假设junit4的静态导入和hamcrest Matcher类似。