【发布时间】:2022-01-25 05:07:50
【问题描述】:
我的测试类看起来是这样的,我尝试模拟存储库以返回真实对象的列表。
在调试中,我看到模拟存储库和服务存储库在测试期间的哈希值是相同的。尽管如此,我还是收到了空的ArrayList。
@RunWith(SpringRunner.class)
@SpringBootTest
class MyServiceTest {
@Mock
private BasicStuffRepository<Stuff> stuffRepository;
@Autowired
private MyService myService;
@Test
void run() {
// mock
var mockObject1 = new Stuff();
var mockObject2 = new Stuff();
var mockObject3 = new Stuff();
var mockObject4 = new Stuff();
List<Stuff> mockStuff = Stream.of(mockObject1, mockObject2, mockObject3, mockObject4).collect(Collectors.toList());
when(stuffRepository.findAll()).thenReturn(mockStuff);
// run
myService.run();
}
}
@Service
@RequiredArgsConstructor
public class MyService {
private final BasicStuffRepository<Stuff> stuffRepository;
public void run() {
stuffRepository.findAll().stream() ....
}
}
【问题讨论】:
-
哈希值相同是好的;问题是它们是模拟的哈希值还是实际实例的哈希值(尽管我同意它看起来应该是模拟的)?在 MyService.run 中,你能确认它是哪种类型吗?
标签: java spring spring-boot mocking mockito