【发布时间】:2020-05-17 22:21:30
【问题描述】:
我正在尝试使用 mockito 测试我的 springboot 服务,但从我的模拟服务中得到空响应 代码编译,服务也完美运行,但测试用例失败,因为模拟服务返回 null。
服务类
@RestController
@RequestMapping(path = "/my-tracker")
public class MyTrackerController {
private static final Logger logger = LoggerFactory.getLogger(MyTrackerController .class);
@Autowired
private TrackerService trackerService;
@RequestMapping(value = "/track/{id}", method = RequestMethod.GET, produces = "application/json")
public String getTrackerDetails(@PathVariable("id") String id)
{
String response = trackerservice.track(id); // <= this is returning null
return response;
}
}
测试类
@RunWith(SpringRunner.class)
@WebMvcTest(value = MyTrackerController.class)
public class MyTrackerControllerTest {
@Autowired
private MockMvc mockMvc;
@MockBean
private TrackerService trackerService ;
@Test
public void getTrackerDetailsTest() throws Exception {
String response= "MyLocation";
Mockito.when(
trackerService.track(
Mockito.anyString())).thenReturn(response);
RequestBuilder requestBuilder = MockMvcRequestBuilders.get(
"/my-tracker/track/123").accept(
MediaType.APPLICATION_JSON);
MvcResult result = mockMvc.perform(requestBuilder).andReturn();
System.out.println(result.getResponse());
JSONAssert.assertEquals(response, result.getResponse()
.getContentAsString(), true);
}
}
非常感谢任何帮助/建议。 使用的 Springboot 版本:2.3.0.RELEASE。
写测试用例参考博客:https://www.springboottutorial.com/unit-testing-for-spring-boot-rest-services
附言:我能够从上面的博客代码中成功运行测试用例,但我的模拟服务返回 null。除了 spring-boot-starter-web 和 spring-boot-starter-test 之外,也没有添加额外的 jars
【问题讨论】:
-
可能是您在 pom.xml 中的 Mockito 文件的依赖项不匹配。确保没有版本冲突。
标签: spring-boot unit-testing mockito microservices