如何在JUnit中不模拟

问题描述 投票:0回答:1

我们在代码库中有一个名为LocationService的类,该类基本上做两件事:进行HTTP调用以查找“位置”,并做了很多工作来将信息映射回可用格式。由于各种原因(主要是SRP),我们希望将此类别分为两类:LocationLookupServiceLocationFactoryService。我们已经完成了,现在LocationLookupService将完成其HTTP工作,然后调用Factory服务。从src/main的角度来看,这似乎很好。但是,由于没有对Factory进行嘲笑,因此Lookup服务的单元测试失败了,我也不希望这样。我希望Lookup服务调用实际的Factory,而不必始终依赖doCallRealMethod类型的模拟(不推荐使用)。

如何在测试时将实际的Factory服务bean正确地连接到Lookup bean中?我尝试了@Autowired的各种组合,调用了构造函数,等等。

@Autowired private LocationFactoryService locationFactoryService;

@InjectMocks private LocationLookupServiceImpl locationService;
spring junit4
1个回答
0
投票

与更多人交谈之后,我想我已经找到了答案:通过@Spy批注或Mockito.spy()方法使用Spy功能。但是,我也被警告过,这可能会导致错误的测试代码。

© www.soinside.com 2019 - 2024. All rights reserved.