lho*_*oak 5 java junit assert assertj
我正在使用AssertJ。我有一个像这样的班MyObj。我有一个List的MyObj。
Class MyObj {
...
Map<K,V> myMap;
...
}
Run Code Online (Sandbox Code Playgroud)
当我使用时:
assertThat(list).extracting("myMap"),我无法使用.containsKey()方法。assertThat(list).extracting("myMap", Map.class),但是它也不起作用。什么是正确的使用方式?
断言映射内容的最简单方法是链接该extracting方法:
MyObj o1 = new MyObj();
o1.getMyMap().put("foo", "Hello");
o1.getMyMap().put("bar", "Bye");
MyObj o2 = new MyObj();
o2.getMyMap().put("foo", "Hola");
o2.getMyMap().put("bar", "Adios");
List<MyObj> myObjs = Arrays.asList(o1, o2);
assertThat(myObjs).extracting("myMap").extracting("foo").contains("Hello", "Hola");
assertThat(myObjs).extracting("myMap").extracting("bar").contains("Bye", "Adios");
Run Code Online (Sandbox Code Playgroud)
小智 7
AssertJ 有 entry() 方法。您可以像这样断言地图值。
assertThat(list)
.extracting("myMap")
.contains(entry("foo1", "bar1"), entry("foo2", "bar2"));
Run Code Online (Sandbox Code Playgroud)
这是javadoc:http : //joel-costigliola.github.io/assertj/core/api/org/assertj/core/data/MapEntry.html