【发布时间】:2013-08-02 18:37:36
【问题描述】:
我正在尝试使用模拟并检查传递给模拟的参数是否正确ArrayList<MyModel>。我已经在MyModel 上定义了布尔值equals 方法,但是我找不到使用equals 方法的正确匹配器。我一直在写的匹配器只比较明显不同的object_id。我的测试看起来像这样:
MainActivity activity = mock(MainActivity.class);
MyRequest subject = new MyRequest(activity);
ArrrayList<MyModel> list = ...;
subject.makeRequest();
verify(activity).handleSuccess(argThat(is(list)));
有谁知道在MyModel 上使用布尔等于的匹配器?
【问题讨论】:
-
为什么这对你不起作用?
verify(activity).handleSuccess(argThat(equalTo(expected))); -
@aim 它比较 object_id 的,因为被调用的参数是
ArrayList的不同实例,所以相等比较返回 false。 -
嗯.. 我认为
equalTo在ArrayList上调用相等,然后它适用于列表的每个元素(如java.util.AbstractList#equals)... -
@aim 我也这么认为,但它给了我同样的错误。
-
为了清楚起见,发布失败消息。
equalTo匹配器确实使用了对象的内置equals方法。请注意,ArrayList的方法要求元素在两个列表中的顺序相同。
标签: java android mockito hamcrest