当前位置: 首页 > 知识库问答 >
问题:

如何在mockito.Mock()之后注入Mock

胡星汉
2023-03-14

我正在用它来实现一个模拟来调用我的抽象类。mockito.mock(abstractService.class,mockito.calls_real_methods)

但我的问题是,我的抽象类有太多的依赖关系是自动连接的。子类是@component。如果它不是一个抽象类,我会使用@InjectMocks来注入这些模拟依赖项。而是如何将mock添加到我上面给出的实例中。

在此处简化代码版本/

abstract class AbstractService{

       @Autowired
       DependencyOne dp1;
        
       @Autowired
        private DependencyOne dp2;

     
       public void doSometingSpecial(){
          dp1.Dosomething(dp2.dosomethingElse())
         .....
         .....

     }
}

我的Junit是

@ExtendWith(SpringExtension.class)
@TestInstance(Lifecycle.PER_CLASS)
class AbstractServiceTest {

        @Mock
        private DependencyOne dp1;
        
        @Mock
        private DependencyOne dp2;

        .....
         .....

        @Test
        void testDirectCall_whenSomething_thenSomerhing(){
               AbstractService service =    Mockito.mock(AbstractService.class,Mockito.CALLS_REAL_METHODS);

        //How to inject dep1 and dp2 mock to write junit for doSometingSpecial()
          }
     }

共有1个答案

陶烨赫
2023-03-14

只需单独为父类添加inject mock

@InjectMocks
AbstractService abstractService;

内测方法给出,

 @Test
 void testDirectCall_whenSomething_thenSomerhing(){
 when(myAbstractClass.doSometingSpecial()).thenReturn("good");
  Assert.assertEquals("good",myAbstractClass.doSometingSpecial());
  }

不需要

AbstractService service =    Mockito.mock(AbstractService.class,Mockito.CALLS_REAL_METHODS);
 类似资料:
  • 问题内容: 方法和注释之间有什么区别?他们是一样的吗? 例如,这是: 与: 问题答案: 它们都达到相同的结果。通常不会使用注解(),因为您不会用看起来都一样的样板分配来填充代码。 请注意,为了使用注释,您的测试类应在其方法中进行注释或包含对的调用。

  • 我在类上设置了一些注释,注释与注释位于同一行,例如: 但是,每次格式化文件时,我的同一行注释都会移动到下一行。这不仅是不可取的,因为它移动了我的评论,更糟糕的是,它将评论置于一个混乱的地方。上述示例变为: 如何阻止Eclipse在格式化后移动这些注释?或者,如何让Eclipse将注释移到上面的一行,而不是下面的一行?非常感谢。

  • 我有一个使用Spring Batch编写的批处理作业 我在下面有一个配置文件: 我有Json线聚合如下: 我想注入对象映射器,不想在JsonLineAggregator类中创建它。我知道如何使用DI实现它吗?

  • 以下是关于Spring Boot中集成测试的教程:http://www.baeldung.com/spring-boot-testing 但是当我尝试注入MockMvc时,我总是得到: 创建在类路径资源[org/springframework/boot/test/autoconfigure/web/servlet/MockMvcAutoConfiguration.class]中定义的名为“mock

  • 我插入数据到一个电子表格与新的谷歌工作表API v4,代码完美的工作和数据它是插入良好的工作表。 但是如何找出最后一行有数据来添加后面的数据呢? A1符号中有什么技巧吗? 我需要一个相当于。