[英]How to test Java Predicate from Spring controller?
有predicate
測試控制器是否有任何有效的變體?
@RestController
public class QueryLauncherController {
private QueryLauncherService queryLauncherService;
@Autowired
public QueryLauncherController(QueryLauncherService queryLauncherService) {
this.queryLauncherService = queryLauncherService;
}
@GetMapping("/queryLauncher/CMP")
public List<QueryLauncherDto> getLaunchersCompany(RTAdmin admin) {
return queryLauncherService.getLaunchersList(admin, QueryLauncher::getIsCompany);
}
}
我嘗試使用any(Predicate.class)
解決此問題,但IDE突出顯示為“未經檢查的分配”,並且看起來很愚蠢。 我為測試編寫的代碼是:
public void returnCompanyLinks_When_companyRequested() throws Exception {
when(queryLauncherService.getLaunchersList(eq(user), any(Predicate.class))).thenReturn(queryLauncherDtos);
mockMvc.perform(get(QUERY_LAUNCHER_URL + CMP).session(mockSession))
.andExpect(status().isOk())
.andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8))
.andExpect(content().json(new Gson().toJson(queryLauncherDtos)));
}
目標是僅在QueryLauncher::getIsInvestor
時運行方法。
List<QueryLauncherDto> getLaunchersList(RTAdmin admin, Predicate<QueryLauncher> launcherType);
有任何變體嗎?
我相信這將滿足您的要求:
doReturn(queryLauncherDtos).when(queryLauncherService).getLaunchersList(eq(user),
ArgumentMatchers.<Predicate<QueryLauncher>>anyObject());
一些警告:
doReturn(value).when(mock).method
功能時,我更喜歡使用doReturn(value).when(mock).method
形式,但是翻轉到when(mock.method).thenReturn(value)
形式很容易。 編輯:我閱讀了2.23版本的Mockito文檔,其中提到anyObject
只是any
方法的別名。
以下應該起作用,並且不建議過時:
doReturn(queryLauncherDtos).when(queryLauncherService).
getLaunchersList(eq(user),
ArgumentMatchers.<Predicate<QueryLauncher>>any());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.