Mockito是A()&任何...()

时间:2014-01-29 11:53:37

标签: mockito

有什么区别:

    verify(mock, times(1)).myMethod(Matchers.isA(String.class));
    verify(mock, times(1)).myMethod(Matchers.anyString());
来自Mockito图书馆?两者都通过我的方法,我想知道哪一个“更好”使用。

1 个答案:

答案 0 :(得分:20)

isA检查该类是否与期望的类匹配。在Mockito 1.x中,anyanyObjectanyString会完全忽略该参数,包括其类型,即使any可以采用类参数和anyString在名称中指定它。

通常,除非您有理由防止传入不兼容的参数,否则您可能会坚持使用anyanyString。 Mockito风格更喜欢灵活的测试用例,这意味着只验证您明确检查的内容,并故意允许其他所有内容都未指定。

更新:Mockito提交者Brice已提供some historical background and future direction

  

对于历史参考,anyanything的简写别名,当时API强制一个人施放,贡献者和/或提交者考虑将该类作为参数传递以避免此演员表,不改变此API的语义。然而,这种变化最终改变了人们认为这个API正在做的事情。 这将在mockito 2 +

中修复