【问题标题】:how can I verify a mock was called with a param with specific fields' values?如何验证使用具有特定字段值的参数调用了模拟?
【发布时间】:2014-10-13 07:56:32
【问题描述】:

我使用 mockito mock 编写了一个 UT。

我想验证是否使用此参数调用了模拟:MyObject obj where obj = { name =... , value = 9}

我想验证模拟是用值为 9 的参数调用的。

你会怎么做?

我不想在myObject 中覆盖equals(..)

【问题讨论】:

    标签: java unit-testing mocking mockito


    【解决方案1】:

    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);
    

    【讨论】:

      【解决方案2】:

      这是一个内置的匹配器:hasProperty

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-09-13
        • 2012-07-18
        • 2015-08-21
        • 1970-01-01
        • 2012-02-09
        • 2015-12-02
        • 1970-01-01
        相关资源
        最近更新 更多