service.searchRaashanRegister
包含另一种方法adresseDao.findRaashan(crit)
,该方法应返回参数setUnit
"BUBBA"
SearchResult<Raashan> searchResult = new SearchResult<Raashan>();
searchResult.setSize(1);
searchResult.setResult(Arrays.asList(raashan));
SearchCriteria crit = new SearchCriteria ();
crit.setUnit(new HashSet<String>(Arrays.asList("BUBBA")));
crit.setPage(0);
crit.setPageSize(15);
crit.setSort(null);
crit.setQuery("");
crit.setSortAsc(Boolean.TRUE);
when(raashanDao.findRaashan(crit)).thenReturn(searchResult);
//This request is sent to web service from which above criteria is created.
RaashanSearchRequest searchRequest = new RaashanSearchRequest ();
searchRequest .setPage(0);
searchRequest .setPageSize(15);
searchRequest .setUnit("BUBBA");
searchRequest .setQuery("");
searchRequest .setSort(null);
searchRequest .setSortASC(Boolean.TRUE);
RaashanResponse response = service.searchRaashanRegister(searchRequest );
上述代码未提供所需结果,adresseDao.findRaashan(crit)
正在返回Null
。当我使用any(SearchCriteria.class)
然后测试通过好,但我们想要特定标准的结果。
我还在@Before中添加了initMocks:
@Before
public void init() {
MockitoAnnotations.initMocks(this);
无法获得发生错误的原因。
答案 0 :(得分:0)
据我了解您的代码,我认为如果您计划在特定实例上设置期望,则需要使用eq
匹配器 - org.mockito.Matchers.eq
。
我假设raashanDao
是一个模拟实例,所以它就像是,
when(raashanDao.findRaashan(eq(crit))).thenReturn(searchResult);
更新:对于之前的讨论,我想,我误解了你的问题。 eq(crit)
应该在when
中工作,并且在不设置任何内容的情况下进行验证,因为这是方法参数。
示例显示为here
您使用any
表示您不关心的参数值,并将eq
用于特定值。