我正在嘗試使用 mockmvc 撰寫集成測驗,但出現錯誤。雖然我作為請求引數收到的 startDate 和 endDate 通常可以正常作業,但在測驗中出現以下錯誤;MethodArgumentTypeMismatchException
我的控制器
@GetMapping("/")
public ResponseEntity<List<TransactionDto>> getTransactionByDateRange(@RequestParam LocalDate startDate,
@RequestParam LocalDate endDate) {
logger.info("Get transaction request received with date range, start date: {} and end date: {}",
startDate,
endDate);
List<TransactionDto> transactionDtoList = transactionService.findTransactionByDateRange(startDate,endDate);
if(transactionDtoList.isEmpty()){
throw new TransactionListIsEmptyException("No transaction data can be found in this date range. "
"Please check the date range you entered.");
}
return new ResponseEntity(Response.ok().setPayload(transactionDtoList), HttpStatus.OK);
}
我的測驗
@Test
public void testfindTransactionByDateRange_whenTransactionsAreExists_ShouldReturnTransactionDtoList() throws Exception {
//given
LocalDate startDate = LocalDate.of(2020,10,5);
LocalDate endDate = LocalDate.now();
Transaction transaction = transactionRepository.save(generateTransaction());
Transaction transaction2 = transactionRepository.save(generateTransaction());
Transaction transaction3 = transactionRepository.save(generateTransaction());
transactionService.createTransaction(transaction);
transactionService.createTransaction(transaction2);
transactionService.createTransaction(transaction3);
List<Transaction> transactionList = new ArrayList<>();
transactionList.add(transaction);
transactionList.add(transaction2);
transactionList.add(transaction3);
List<TransactionDto> expected = converter.convertList(transactionList);
//when
//then
this.mockMvc.perform(get(TRANSACTION_API_ENDPOINT)
.queryParam("startDate","10.10.2015")
.queryParam("endDate","10.10.2015"))
.andExpect(status().is2xxSuccessful())
.andExpect(content().contentType(MediaType.APPLICATION_JSON));
}
uj5u.com熱心網友回復:
編輯:經過一番搜索,我發現這個執行緒可以用作這個主題的解決方案:
如何在 Spring 中使用 LocalDateTime RequestParam?我收到“無法將字串轉換為 LocalDateTime”
由于 LocalDate 引數的確切型別與在 queryParam 中發送的一個用戶不匹配,因此會引發例外。使用預期型別添加@DateTimeFormat到控制器中的引數將解決該問題。
您可以嘗試使用物件創建來提供您的startDate和引數嗎?這是一個非常好的指南,您可以遵循:~endDateLocalDate
https://www.baeldung.com/java-creating-localdate-with-values
該錯誤可能是由于向該 LocalDate 欄位提供字串而發生的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/525352.html
標籤:爪哇春天测试模拟MVC
上一篇:具體結構的模擬特征實作
