Springboot Mockito :返回 null 的模拟服务方法



我正在尝试使用 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);
}
}

任何帮助/建议都非常感谢。 使用的弹簧引导版本:2.3.0.发布。

博客参考编写测试用例:https://www.springboottutorial.com/unit-testing-for-spring-boot-rest-services

p.s. :我能够从上面的博客代码成功运行测试用例,但我的模拟服务返回 null。除了弹簧启动启动网和弹簧启动启动器测试之外,也没有添加额外的罐子

我可以想到的一个原因:

根据getTrackerDetails的RequestMapping,JSON字符串预计将作为响应返回(产生=application/json(

尝试在测试用例中返回有效的 JSON 作为响应。

例:

String response = ""field":"value"";

最新更新