如何在Mockito中创建自定义火柴



我正在使用Mockito进行单元测试。Mockito中有许多像anyString()anyBoolean()这样的匹配器。但假设我有一个像一样的自定义enum

枚举登录类型.java

//LoginType.java
public enum LoginType {
    FACEBOOK,
    EMAIL,
    GOOGLE
}

在其中一个方法参数中,我需要传递LoginType的一个实例。如何在不显式传递LoginType.FACEBOOKLoginType.GOOGLE的情况下传递参数。类似anyString()。这方面的任何提示都是有用的。

对于any行为,在Java 8上只调用Matchers.any()就足够了。这时参数类型推断就出现了。

您也可以选择Matchers.any(LoginType.class),它在Mockito 1.x中具有纯any()行为,但将在Mockito2.0及更高版本中提供类型检查。在任何一种情况下,传入类文字都将帮助Java获得推理所需的类型信息。


对于相关问题:

  • 如果您有一个泛型类型,那么类文字也不够;您需要将其指定为显式方法参数:

    Matchers.<YourContainer<YourType>>any();
    

    或者提取到静态辅助方法,您需要这样做,而不是常量或局部变量,因为Mockito匹配器通过副作用工作:

    public static LoginType anyLoginType() {
      return Matchers.any();
    }
    
  • 最后,对于未来可能在这里实现自定义匹配逻辑的读者,请查找Matchers.argThatMockitoHamcrest.argThat,以将Hamcrest样式的Matcher对象调整为Mockito方法调用。

相关内容

  • 没有找到相关文章

最新更新