我有一个扩展{
"manifest_version" : 3,
"name" : "Play",
"description" : "Play",
"version": "2",
"browser_action" : {
"default_title" : "Play-Pause",
"default_popup" : "popup.html"
},
"permissions" : [
"activeTab",
"tabs",
"background"
],
"content_scripts": [{
"matches": ["http://*/*"],
"js": [
"content.js"
]
}],
"background" : {
"scripts": ["background.js"],
"persistent": false
}
}
的{{1}}接口。此接口包含此方法。
BeerRepository
在控制器处理程序方法中,我有这个。
JPARepository<Beer,UUID>
我正在尝试对控制器处理程序方法进行单元测试。
Page<Beer> findAllByBeerName(String beerName, Pageable pageable);
方法是这样。
Page<Beer> pagedResult = beerRepository.findAllByBeerName(beer.getBeerName(),
createPageRequest(0,10,Sort.Direction.DESC,"beerName"));
我的@Test方法是这个。
@BeforeEach
运行测试时,我会得到
. . .
Page<Beer> pagedResponse;
@BeforeEach
void setUp() {
beerList = new ArrayList<Beer>();
beerList.add(Beer.builder().build());
beerList.add(Beer.builder().build());
pagedResponse = new PageImpl(beerList);
mockMvc = MockMvcBuilders
.standaloneSetup(controller)
.build();
}
对此将提供任何帮助。
答案 0 :(得分:0)
问题是:用when(...)
模拟时,不能将Mockito匹配器与实际值混合。参见docs。
在您的情况下,以下应该可以正常工作:
when(beerRepository.findAllByBeerName(anyString(), eq(PageRequest.of(0,
10,Sort.Direction.DESC,"beerName")))).thenReturn(pagedResponse);
或
when(beerRepository.findAllByBeerName(anyString(), any(PageRequest.class)).thenReturn(pagedResponse);
最后,您可以使用实际的预期字符串代替anyString()
,并保留PageRequest.of(...)
不变。它也应该工作(假设它们配置正确)。
答案 1 :(得分:0)
模拟任何方法时都需要为参数设置模拟类
when(beerRepository.findAllByBeerName(anyString(), any(Pageable.class)).thenReturn(pagedResponse);