如何验证使用具有特定字段的参数调用模拟'值?

时间:2014-10-13 07:56:32

标签: java unit-testing mocking mockito

我使用mockito mock写了一个UT。

我想验证使用此参数调用mock:MyObject obj其中obj = { name =... , value = 9}

我想验证模拟是否使用值为9的param调用。

你会怎么做?

我不想覆盖equals(..)

中的myObject

2 个答案:

答案 0 :(得分:0)

mockito有ArgumentMatcher接口:

 class IsListOfTwoElements extends ArgumentMatcher<List> {
     public boolean matches(Object list) {
         return ((List) list).size() == 2;
     }
 }

 List mock = mock(List.class);

 when(mock.addAll(argThat(new IsListOfTwoElements()))).thenReturn(true);

答案 1 :(得分:0)

这些是内置匹配器:hasProperty

assertThat(externalPois, Matchers.hasItem(Matchers.<ExternalPoi>hasProperty("id", is(5))));