【问题标题】:Mocking spring model classes that have model classes in them as member variables模拟其中具有模型类作为成员变量的弹簧模型类
【发布时间】:2016-11-19 19:49:45
【问题描述】:

所以,我有一个类结构:

class ModelA  
{  
    ModelB b; // Also a model object  
    // Getters and setters  
}

class B()  
{  
    ModelC c; // Also a model object   
    ModelD d; // Also a model object  
} 

我想模拟所有这些并在 ModelA 对象列表中使用它们。这样做的最佳方法是什么?

【问题讨论】:

    标签: spring unit-testing mocking mockito springmockito


    【解决方案1】:

    有几个选项。

    1. 不要模拟,在测试设置中创建实际的模型对象
    2. 存根 getter 并返回模拟子对象,例如:

      when(mockA.getB().thenReturn(mockB)); 
      when(mockB.getC()).thenReturn (mockC);
      

    【讨论】:

    • 谢谢。如果我要使用第二个选项,我如何能够将 mockA 关联到 mockB 作为它的成员变量?
    • hmm... 模拟对象没有成员变量。但是,您可以指定在 mockA 上调用 getB 时返回的内容。
    • 谢谢。如果这不是坏习惯,我想我可能会选择第一个选项。设置模型对象并将它们用于服务测试是否被认为完全可以?模拟规则不是模拟除测试服务之外的所有非原始类型吗?请指教。
    • 我相信是这样。该规则适用于执行操作或具有一些附加逻辑的类型。如果类型只有 getter/setter,你可以设置它进行测试。
    猜你喜欢
    • 2012-05-25
    • 2021-07-25
    • 1970-01-01
    • 1970-01-01
    • 2017-02-19
    • 2020-03-28
    • 1970-01-01
    相关资源
    最近更新 更多