【问题标题】:Mockito. Verify method param to be a particular class莫基托。验证方法参数是否为特定类
【发布时间】:2013-01-24 04:44:29
【问题描述】:

我有一个方法:

void putObject(<T extends BaseEntity> param)

在我模拟此方法的地方进行了一些测试,但我想知道,如何验证该方法是使用特定类的参数调用的?尝试以这种方式做到这一点:

verify(foo).putObject((SomeClass)anyObject());
------
verify(foo).putObject(any(SomeClass.class));
------
ArgumentCaptor<SomeClass> parameter = ArgumentCaptor
            .forClass(SomeClass.class);
verify(foo).putObject(parametr);

仅适用于 any() 的第二个变体,但不适用于t check class ofparameter`。那么是否可以验证该方法获取特定类的任何对象?

【问题讨论】:

    标签: java unit-testing mockito


    【解决方案1】:

    用户匹配器documentation isA() 方法。

    public static &lt;T&gt; T isA(java.lang.Class&lt;T&gt; clazz)

    这会解决你的问题。

    verify(foo).putObject(isA(SomeClass.class));

    【讨论】:

      【解决方案2】:

      其实你可以用 ArgumentCaptor 检查一下。

      ArgumentCaptor<SomeClass> parameterCaptor = ArgumentCaptor
                  .forClass(SomeClass.class);
      verify(foo).putObject(parameterCaptor.capture());
      
      SomeClass instance = parameterCaptor.getValue();
      // check intance.getX()
      // check instance.getY()
      

      【讨论】:

        猜你喜欢
        • 2011-04-03
        • 1970-01-01
        • 1970-01-01
        • 2012-07-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多