【问题标题】:Creating strict mock when using @MockBean of spring boot?使用Spring Boot的@MockBean时创建严格的模拟?
【发布时间】:2017-06-17 23:17:32
【问题描述】:

我使用弹簧靴的@MockBean(使用@RunWith(SpringRunner.class)),到目前为止一切正常。
然而,模拟为模拟类的每个方法提供了默认实现,因此我无法检查是否只调用了我希望调用的那些方法,即我想创建严格的模拟。
@MockBean 可以吗?

如果有人知道如何检查是否只有我期望的那些方法被调用,我不会坚持创建严格的模拟。

提前感谢您的帮助!

问候,
五、

【问题讨论】:

    标签: java spring spring-boot mockito


    【解决方案1】:

    使用 Mockito,您可以验证是否调用了方法:

    verify(mockOne).add("one");
    

    或者它从未被调用过(never() 是 times(0) 的更易读的别名):

    verify(mockOne, never()).remove("two");
    

    或者您可以验证 没有调用其他方法

    verify(mockOne).add("one"); // check this one
    verifyNoMoreInteractions(mockOne); // and nothing else
    

    有关详细信息,请参阅Mockito documentation

    【讨论】:

    • 哦,我喜欢verifyNoMoreInteractionsverifyZeroInteractions,他们会的!谢谢!
    【解决方案2】:

    您可以对由@Mockbean 创建的模拟对象使用 Mockito.verify 方法。 它可以检查它调用了多少次,指定了什么参数,等等。 请尝试一下。

    【讨论】:

    • 感谢您的回复!那我也可以用times(0) 写吗?还有一件事我不必用times(0)检查所有方法吗?
    • 是的,你可以做到。
    • 对不起,我还没读完最后一句话。尝试使用 verifyZeroInteractions。我从来没用过。
    猜你喜欢
    • 2014-07-02
    • 2018-10-21
    • 2019-05-01
    • 2019-02-03
    • 2021-08-02
    • 2019-07-02
    • 2014-08-29
    • 1970-01-01
    • 2018-08-24
    相关资源
    最近更新 更多