当没有构造函数时,如何连接 Mockito 模拟? [英] How can Mockito mocks be wired when there is no constructor?

查看:60
本文介绍了当没有构造函数时,如何连接 Mockito 模拟?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在阅读 本教程SUT 使用构造函数,但我的问题是如果没有构造函数,例如如果我们有:

I was going through this tutorial which sets up the SUT using a constructor but my question is what if there is no constructor e.g. if we have:

@Autowire private PetRepository petRepository;
@Autowire private VetRepository vetRepository;
@Autowire private OwnerRepository ownerRepository;
@Autowire private VisitRepository visitRepository;

在服务/控制器中.我们如何设置?

in the service/controller. How we can set this up?

推荐答案

我更喜欢注释 setter 而不是类的属性.例如:

I prefer to annotate the setters instead of the attributes on the classes. For example:

public class SomeClass implements SomeInterface {

   private PetRepository petRepository;
   private VetRepository vetRepository;
   private OwnerRepository ownerRepository;
   private VisitRepository visitRepository;

   ... some methods ...

   @Resource
   public void setPetRepository(PetRepository petRepository) {
        this.petRepository= petRepository;
   }

   @Resource
   public void setVetRepository(VetRepository vetRepository) {
        this.petRepository= vetRepository;
   }

   @Resource
   public void setOwnerRepository(OwnerRepository ownerRepository) {
        this.ownerRepository = ownerRepository;
   }

   @Resource
   public void setVisitRepository(VisitRepository visitRepository) {
        this.visitRepository= visitRepository;
   }

}

然后你可以用 Mockito 和 Junit 创建一个这样的测试用例:

Then you can create a test case like this with Mockito and Junit:

public class SomeClassTestCase {

  @Mock 
  private PetRepository petRepository;

  @Mock 
  private VetRepository vetRepository;

  @Mock 
  private OwnerRepository ownerRepository;

  @Mock 
  private VisitRepository visitRepository;

  private SomeClass someClass;

  @Before
  public void before(){
     MockitoAnnotations.initMocks(this);
     someClass = new SomeClass();
     someClass.setPetRepository(petRepository);
     someClass.setVetRepository(vetRepository);
     someClass.setOwnerRepository(ownerRepository);
     someClass.setVisitRepository(visitRepository);
  }

  @Test
  public void someTest() {
    ...
  }

}

希望有帮助.

这篇关于当没有构造函数时,如何连接 Mockito 模拟?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆