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

Spring通过构造函数注入初始化的mock

赏新知
2023-03-14

我有一个单例类(所以私有构造函数),它需要在初始化期间使用Spring数据存储库。我有一个注入作为构造函数参数。大致:

@Controller
public class MyClass {
    @Autowired
    private MyClass(MyRepository repo) {
        repo.findAll();
    }
}

我想单元测试我的类,所以我需要用模拟值初始化一个模拟存储库,然后在我的类初始化之前传递到我的类中。我如何写我的Mockito模拟在我的JUnit测试使这成为可能?

共有1个答案

贝研
2023-03-14

你不需要Spring;这是构造函数注入的一个优点。只需使用MyRepository mockRepo=mock(MyRepository.class)newmyclass(mockRepo)

(顺便说一句,你的构造函数应该是公共的。你似乎犯了一个常见的错误,混淆了“singleton”的不同含义;在DI的情况下,它只是意味着容器只生成一个实例并共享它。最后,如果你只有一个构造函数,你不需要@Autowired

 类似资料:
  • 问题内容: 在Java中,但是在其他OO语言中,初始化属性定义之间也有区别,例如 并使用构造函数对其进行初始化? 我想不出任何实际的区别,有没有?否则,即使结果相同,是否存在一种方法优于另一种方法的情况? 问题答案: 初始化顺序在这里很重要。 将字段设置为默认初始值(0,false,null) 调用对象的构造函数(但不要执行构造函数的主体) 调用超类的构造函数 使用初始化程序和初始化块初始化字段

  • 问题内容: 我有两个班,第一个是我的主班,第二个是我的编辑框架班。 我的第二个类(UpdateGUI)在其构造函数中提供oldName,并对其进行编辑,当我单击时,它将newName发送给我的第一个类。 我的第二堂课: 我的问题是,为什么newName为null? 更新: UpdateGUIDialog类: 输出: 我需要打印而不是null。 问题答案: Java对象有点像真实对象。并顾名思义:它

  • 主要内容:初始化 const 成员变量构造函数的一项重要功能是对成员变量进行初始化,为了达到这个目的,可以在构造函数的函数体中对成员变量一一赋值,还可以采用 初始化列表。 C++构造函数的初始化列表使得代码更加简洁,请看下面的例子: 运行结果: 小明的年龄是15,成绩是92.5 李华的年龄是16,成绩是96 如本例所示,定义构造函数时并没有在函数体中对成员变量一一赋值,其函数体为空(当然也可以有其他语句),而是在函数首部与函数体之间添

  • 映射对构造函数没有限制或要求 (__init__ )类的方法。您可以自由地为您想要的函数要求任何参数,为ORM未知的实例分配属性,并且通常在编写Python类的构造函数时做您通常会做的任何其他事情。 sqlAlchemy ORM不调用 __init__ 从数据库行重新创建对象时。ORM的过程有点类似于Python标准库的 pickle 模块,调用低级 __new__ 方法,然后在实例上悄悄地恢复属

  • 我试图用BaseURl、DefaultHeader等构建webClientBuilder。我试图在MyServiceImpl构造器中初始化它,但不确定它是否正确。 我做得对吗?还是有更好的方法。 目前我有2个ServiceImpls来调用不同的API,这就是我试图在服务本身设置“baseUrl”和其他默认值的原因。

  • 请帮助理解在哪种情况下我应该使用构造函数注入和设置器注入。请帮我举个合适的例子。 先谢谢你。