如何验证Easymock中集合中的元素数量?我正在测试的类应该调用一个方法,传入一个带有 n 元素的集合。现在,我匹配列表中的任何对象:
mockFooSetReceiver.saveFooSet(eq(name),
(List<IFooSet>) anyObject());
replay(mockFooSetReceiver);
我想指定集合中的元素数量:
mockFooSetReceiver.saveFooSet(eq(name),
setOfNObject(100));
replay(mockFooSetReceiver);
或者更好的是,匹配集合中的元素:
mockFooSetReceiver.saveFooSet(eq(name),
setEq(ecpectedSet));
replay(mockFooSetReceiver);
我是否必须推出自己的匹配器,是否内置了一个?或者有人有一个他们想要分享的setOfNObject
或setEq
匹配器吗?
答案 0 :(得分:3)
由于集合必须根据此合同实施等于(..):
将指定对象与此集进行相等性比较。返回 如果指定的对象也是一个集合,则为true,这两个集合 具有相同的大小,并且指定集的每个成员都是 包含在这个集合中(或者等效地,该集合的每个成员都是 包含在指定的集合中)。这个定义确保了 equals方法适用于不同的实现 设置界面。
一个简单的EasyMock.eq(ecpectedSet)可以胜任。
如果它只是集合的大小@ Guillaume的回答是要走的路。
答案 1 :(得分:1)
您必须使用matches
方法设计自己的匹配器:
抱歉,我手头没有类似的匹配器。