我在表格中插入一个Collection<Event>
,像这样
Collection<Event> eventCollection = service.insert(events);
现在,我需要测试Event
eventCollection
是否具有某些属性。我不确定Event
存储在eventCollection
中的顺序.目前,这就是我做断言的方式。
assertTrue(
Iterables.get(eventCollection, 0).getPojo.getField1()
.equals("Some Value") &&
Iterables.get(eventCollection, 0).getPojo.getField2()
.equals("Some Value") &&
Iterables.get(eventCollection, 0).getPojo.getField3()
.equals("Some Value") &&
Iterables.get(eventCollection, 1).getPojo.getField1()
.equals("Some Value") &&
eventCollection, 1).getPojo.getField2()
.equals("Some Value") &&
Iterables.get(eventCollection, 1).getPojo.getField3()
.equals("Some Value"))
);
我知道eventCollection
中有两个元素,但我不确定它们的顺序。 Iterables.get
似乎工作正常,但我想知道是否有任何更简单/更短的方法来使用流 API 执行此操作?
编辑:"Some Value"
不一定是指String
。
为了最清楚起见,我建议将低级谓词封装到帮助程序方法中,并使用 Stream.allMatch 进行检查。
辅助函数(假设放在类Context
中,确切位置无关紧要(:
public static boolean expectedValues(Event event) {
return event.getPojo().getField1().equals("Some Value") &&
event.getPojo().getField2().equals("Some Value") &&
event.getPojo().getField3().equals("Some Value");
}
实际的检查,确实更加不言自明:
assertTrue(eventCollection.stream().allMatch(Context::expectedValues));