mockito - Spring Boot 测试 - Mockito - 服务调用返回 null
问题描述
我正在我的控制器中测试一个 post 方法,它只返回一个 String 并使用 Mockito 来模拟服务调用。我的问题是,当在控制器上调用服务方法时,它返回 null。
@RunWith(SpringRunner.class)
@WebMvcTest(ProcessGroupController.class)
public class ProcessGroupRestControllerTest {
.............
@Test
public void givenAllNifiArguments_whenImportProcessGroup_thenReturnJsonOk() throws Exception {
NiFiArguments niFiArguments = NiFiArguments.builder()......flowVersion("3").build();
String expected = "1689d61b-624d-4574-823d-f1b4755882e1";
String json = mapper.writeValueAsString(niFiArguments);
//Mock service call
when(nifiService.importProcessGroup(niFiArguments)).thenReturn(expected);
mvc.perform(post("/nifi/pg-import").contentType(MediaType.APPLICATION_JSON).content(json))
.andExpect(status().isCreated())......);
}
控制器:
@PostMapping("/pg-import")
public ResponseEntity<String> importProcessGroup(@RequestBody NiFiArguments niFiArguments)
throws NiFiClientException {
log.info("Called method importFlow");
String result = nifiService.importProcessGroup(niFiArguments);
return new ResponseEntity<String>(result, HttpStatus.CREATED);
}
字符串结果 = null
我有类似的测试返回一个 POJO,它工作得很好
解决方案
正如ekalin所说,我的构建器类需要实现equals和hashcode:
@Builder
@Getter
@EqualsAndHashCode
public class NiFiArguments {
private String bucketIdentifier;
private String flowIdentifier;
private String flowVersion;
private String baseUrl;
}
推荐阅读
- css - Bootstrap - 连续两个 div,一个固定,一个灵活
- react-native - 博览会更新后无法连接到本地主机
- java - 更改 Java Eclipse 代码中的输出颜色
- sql-server - '<' 和 '>' 等比较运算符如何处理字符串值?
- r - 在 R 中展开/估算时间序列
- vue.js - 将数据传递给 vue.js 方法
- seo - 在 AEM 中,我想添加
标签内的标签。架构内的多字段选项 - php - PHP MySQL - 为什么存储过程调用在 PHP 代码中意外结束
- list - python重新排序列表元素并转换为set
- matlab - 如何从日期时间中提取特定的时间范围?