Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
模拟将模型类作为成员变量的spring模型类_Spring_Unit Testing_Mocking_Mockito_Springmockito - Fatal编程技术网

模拟将模型类作为成员变量的spring模型类

模拟将模型类作为成员变量的spring模型类,spring,unit-testing,mocking,mockito,springmockito,Spring,Unit Testing,Mocking,Mockito,Springmockito,因此,我有一个类结构: 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对象列表中使用它们。这样做的最佳方式是什么 有两种选择 不要

因此,我有一个类结构:

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对象列表中使用它们。这样做的最佳方式是什么

有两种选择

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

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

  • 有两种选择

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

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

  • 非常感谢。如果我使用第二个选项,我将如何将mockA与mockB关联为它的成员变量?嗯。。。模拟对象没有成员变量。但是,您可以指定在
    mockA
    上调用
    getB
    时返回的内容。谢谢。我想如果这不是一个坏习惯的话,我可能会选择第一种。您认为设置模型对象并将其用于服务测试完全可以吗?模拟规则不是像模拟除测试服务之外的所有非原语类型吗?请告知。我相信是这样。该规则适用于执行操作或具有某些附加逻辑的类型。如果类型只有getter/setter,那么您可以为测试设置它。谢谢。如果我使用第二个选项,我将如何将mockA与mockB关联为它的成员变量?嗯。。。模拟对象没有成员变量。但是,您可以指定在
    mockA
    上调用
    getB
    时返回的内容。谢谢。我想如果这不是一个坏习惯的话,我可能会选择第一种。您认为设置模型对象并将其用于服务测试完全可以吗?模拟规则不是像模拟除测试服务之外的所有非原语类型吗?请告知。我相信是这样。该规则适用于执行操作或具有某些附加逻辑的类型。如果类型只有getter/setter,那么您可以为测试设置它。