Java Mockito:如果预定义的搜索条件被传递给dao并且调用了具有dao的服务,则该服务不起作用
Java Mockito:如果预定义的搜索条件被传递给dao并且调用了具有dao的服务,则该服务不起作用,java,junit,mockito,Java,Junit,Mockito,service.searchRaashanRegister包含另一个方法adresseDao.findRaashan(crit),该方法应为参数setUnit“BUBBA” 无法获取发生错误的原因 就我对您的代码的理解而言,我认为您需要使用eqmatcher-org.mockito.Matchers.eq来设置特定实例的期望值 我假设raashanDao是一个模拟实例,所以它会像 when(raashanDao.findRaashan(eq(crit))。然后返回(searchResult) 更
service.searchRaashanRegister
包含另一个方法adresseDao.findRaashan(crit)
,该方法应为参数setUnit
“BUBBA”
无法获取发生错误的原因 就我对您的代码的理解而言,我认为您需要使用
eq
matcher-org.mockito.Matchers.eq
来设置特定实例的期望值
我假设raashanDao
是一个模拟实例,所以它会像
when(raashanDao.findRaashan(eq(crit))。然后返回(searchResult)代码>
更新:对于之前的讨论,我想我误解了你的问题<代码>eq(crit)
应在中以及在验证中正常工作,无需设置任何内容,因为这是一个方法参数
显示了一个示例
对于不关心的参数值,可以使用any
,对于特定值,可以使用eq
eq(临界)不起作用。我不明白(也需要将相同的crit实例设置为raashanDao模拟实例)。在@Before中,我们已经初始化了服务类,将上面的mock对象作为参数,代码类似于@Before public void init(){MockitoAnnotations.initMocks(this);service=new RaashanServicesImpl(RaashanDao,manlingDao,quatroDao);}crit是findRaashan方法->RaashanDao.findRaashan(crit)中的条件参数。它是一个具有各种参数的对象,如上面代码段所示,这就是为什么您的any
匹配器可以工作的原因,因为您不必为特定实例而烦恼。您将无法使用eq
,除非您将代码更改为有某种方式来设置crit
。总之,当实际方法调用发生时,使用的值eq
应该可用。有很多方法可以做到这一点。让我们来看看。请阅读。您希望在问题中包含所有相关代码,而不是在答案上给出更多的注释。这个问题需要独立存在,包含了所有我们需要回答的东西。这显然不是
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 );
@Before
public void init() {
MockitoAnnotations.initMocks(this);