【问题标题】:mockito partial parmaters mockingmockito 部分参数模拟
【发布时间】:2016-08-28 20:00:27
【问题描述】:

我正在尝试用 java 编写单元测试。下面是我的代码的 sn-p

类温度 { 公共无效方法(){

       return someObject.someMethod(param1, param2, param3, param4, param5);
   }
}

测试方法:

@Test
public void testMethod() {

     Mokito.when(someObjectMock.someMethod(Mockito.anyString(), Mockito.anyString(), Mockito.anyInt(), Mockito.anyBoolean(),
                    false)). thenReturn(true);

     boolean status = temp.method();

     Assert.assertEquals(true, status);
}

在执行测试用例时,我遇到以下错误:

 Invalid Use of argument matchers !
 5 matchers expected, 4 recorded

如果我的理解是正确的,它期望传递的所有参数都被模拟。但这不是我想要的,我希望模拟前 4 个参数,并根据 5 个参数(true 或 false),然后指定适当的方法返回值。

有没有办法解决这个问题?

谢谢

【问题讨论】:

    标签: java unit-testing mockito matcher


    【解决方案1】:

    最后一个参数你需要使用Matchers.eq(false)(或Mockito.eq(false),相同的静态方法暴露在两个地方)而不是普通的false

    也就是说,考虑将存根中的所有匹配器(when() 调用)保留为 any(),而不是期望值。这里有两种情况:要么您的测试实际上关心传递给模拟的值,在这种情况下,您需要一个 verify() 调用(因为错过模拟期望不是 Mockito 中的错误),或者您的测试没有不在乎,在这种情况下,期望一个特定的值只会让你的测试变得脆弱。无论哪种方式,除非您需要根据不同的参数值从存根返回不同的值,否则在存根时期望特定参数没有任何价值。

    【讨论】:

      猜你喜欢
      • 2012-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-17
      • 2011-05-13
      相关资源
      最近更新 更多