java mock返回结果
时间: 2023-10-14 18:58:28 浏览: 43
在Java中,使用mock对象进行单元测试时,可以根据入参返回自定义的mock结果。有两种常见的mock模式可以实现这个功能。
第一种是使用@MockBean注解。在测试类中,通过@MockBean注解将需要mock的对象注入到测试类中。然后使用when().thenAnswer()模式来定义mock逻辑。例如,在执行tagService.buildTagName(bid)方法时,可以使用Mockito.when(tagService.buildTagName(bid)).thenAnswer()来定义mock逻辑。在thenAnswer()中,根据入参判断是否为正确的bid,如果是,则返回正确的mock结果,否则返回错误的mock结果。可以根据实际情况编写具体的mock逻辑。\[2\]
第二种是使用@SpyBean注解。与@MockBean类似,@SpyBean也可以将需要mock的对象注入到测试类中。不同的是,使用@SpyBean时需要使用doAnswer().when()模式来定义mock逻辑。例如,在执行tagService.buildTagName(bid)方法时,可以使用Mockito.doAnswer().when(tagService).buildTagName(bid)来定义mock逻辑。在doAnswer()中,同样可以根据入参判断是否为正确的bid,然后返回相应的mock结果。\[3\]
这两种mock模式都可以根据入参返回自定义的mock结果,具体使用哪种模式取决于实际情况和个人偏好。
#### 引用[.reference_title]
- *1* *2* *3* [搭建大型分布式服务(四十五)SpringBoot 单元测试Mock如何根据参数返回结果?](https://blog.csdn.net/hanyi_/article/details/123068512)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]