[英]Spring - Unit Test with Mock - How to mock a Custom Collector in a Service unit test
我有一個煩人的問題。
我有一個服務(在 RestController 中使用),它從存儲庫中獲取數據並對獲取的數據進行一些轉換。 我在轉換中使用自定義收集器。 所以它看起來像:
@RestController
class myController() {
Service myService
@GetMapping()
void getResults{
Collection col = myService.fetch();
// some file download logic
}
}
@Service
class myService() {
Repository repository
Collector myCollector
Collection fetch() {
return repository
.getSomeResults()
.stream()
.collect(Collectors.groupingBy(someKey, myCollector)
.values();
}
}
在這里,當我想對服務方法 fetch() 進行單元測試時,我可以模擬存儲庫,但如果我想模擬自定義收集器,我需要對所有 5 個方法進行存根。 除了finish(),其他的mock都沒什么意義。
我不想減少測試覆蓋率。 我應該如何解決這個問題?
單元測試背后的想法是您以原子方式測試您的方法。 但這並不意味着您必須在內部模擬所有其他方法調用。
比如說,你有一個數據庫調用/網絡調用,模擬它是有意義的。 當被調用方法的響應決定將在被調用方法上執行的分支時,模擬是有意義的。 但在這種情況下,它類似於 mocking a Collectors.toList()
。 沒有 mocking 在這里沒有壞處。
此外,只要您的自定義收集器有自己的單元測試,這無論如何都不會影響您的覆蓋范圍
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.