当没有构造函数时,如何连接 Mockito 模拟? [英] How can Mockito mocks be wired when there is no constructor?
本文介绍了当没有构造函数时,如何连接 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屋!
查看全文