gpt4 book ai didi

mockito - Mockito @Spy 和 @Mock(answer = Answers.CALLS_REAL_METHODS) 之间的区别

转载 作者:行者123 更新时间:2023-12-02 09:51:47 27 4
gpt4 key购买 nike

Mockito 中这两个声明有什么区别?

@Mock(answer = Answers.CALLS_REAL_METHODS)
ArrayList<String> mock;

@Spy
ArrayList<String> spy;

最佳答案

前一种 CALLS_REAL_METHODS 风格创建一个未初始化的对象;不运行任何构造函数,也不设置任何字段。一般来说,这种语法是不安全的,因为真正的实现将与可能构成无效或不可能状态的未初始化字段进行交互。

后一个 @Spy 风格允许您调用您选择的构造函数,或者 Mockito 将 try to call a no-arg constructor if the field is uninitialized 。然后将这些字段复制到生成的 Spy(扩展了监视类型)中,从而实现更安全、更现实的交互。

<小时/>

必要提醒:不要在玩具示例之外真正模拟 Java 集合,并且在覆盖 spies 和 CALLS_REAL_METHOD 模拟时不要忘记使用 doReturn 语法,否则您将在其中调用真正的方法when 调用。

关于mockito - Mockito @Spy 和 @Mock(answer = Answers.CALLS_REAL_METHODS) 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33516324/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com