【发布时间】:2023-03-24 03:52:01
【问题描述】:
我有带有方法 create(validation using util class + databaseService(databaseDao + caching ))
@RestController
@RequestMapping("files")
public class FilesController {
private IDbFilesDao dbFilesService;
private Map<String, Table> tables;
public FilesController(IDbFilesDao dbFilesService, Map<String, Table> tables) {
this.dbFilesService = dbFilesService;
this.tables = tables;
}
@PostMapping("{table}")
public ResponseEntity createTable(@PathVariable("table") String tableName,
@RequestBody File file) {
FilesValidator.validateAdding(tableName, tables, file);
dbFilesService.create(tableName, file);
URI location = ServletUriComponentsBuilder.fromCurrentRequest().buildAndExpand(file.getKey()).toUri();
return ResponseEntity.created(location).build();
}
}
我有一个测试:
@RunWith(SpringRunner.class)
@WebMvcTest(value = FilesController.class, secure = false)
public class FilesControllerTest {
@Autowired
private MockMvc mockMvc;
@MockBean
private IDbFilesDao dbFilesService;
@MockBean
private Map<String, Table> tables;
@Test
public void create() throws Exception {
RequestBuilder requestBuilder = MockMvcRequestBuilders
.post("/files/tableName")
.accept(MediaType.APPLICATION_JSON)
.content(POST_JSON_BODY)
.contentType(MediaType.APPLICATION_JSON);
MvcResult result = mockMvc.perform(requestBuilder).andReturn();
MockHttpServletResponse response = result.getResponse();
assertEquals(HttpStatus.CREATED.value(), response.getStatus());
}
}
只有在@RestContoller 中没有这一行时它才能正常工作:
FilesValidator.validateAdding(tableName, tables, file);
此行 - 404 未找到。
FilesValidator - 具有静态方法的实用程序类。它检查数据是否有效并且什么都不做或抛出带有状态码的运行时异常(例如 404)。
如何在不删除 Validation 的情况下修复它?
【问题讨论】:
标签: java spring junit mockito integration-testing