2016-02-01 6 views
1

У меня есть следующий фрагмент кода, для которого я пишу модульный тест с использованием Mockito:Mockito недопустимое использование исключения Matchers

 while (results.hasMore()) { 
      found = true; 
      SearchResult searchResult = (SearchResult) results.next(); 
      Attributes attributes = searchResult.getAttributes(); 
      Attribute attr = attributes.get(LdapAttribute.CUSTOMER_GUID.getValue()); 
      setAttribute(attr); 
      if (getAttribute() != null && cust.getCstCustGuid() == null) 
       cust.setCstCustGuid((String) attr.get()); 
     } 

Блок кода тест заглушки:

Mockito.doReturn(mockCustomer).when(ldap).getLDAPCustomer(); 
    Mockito.doReturn(mockCtx).when(ldap).getInitialDirContext(); 
    Mockito.doNothing().when(ldap).setAttribute(Mockito.any(Attribute.class)); 
    Mockito.doReturn(mockAttribute).when(ldap).getAttribute(); 
    Mockito.doReturn(mockSearchControls).when(ldap).getSearchControls(); 
    Mockito.doNothing().when(mockSearchControls).setSearchScope(Mockito.anyInt()); 
    Mockito.when(mockCtx.search(Mockito.anyString(), Mockito.anyString(), Mockito.any(SearchControls.class))).thenReturn(mockResults); 
    Mockito.when(mockResults.hasMore()).thenReturn(true).thenReturn(false); 
    Mockito.when(mockResults.next()).thenReturn(mockSearchResults); 
    Mockito.when(mockSearchResults.getAttributes()).thenReturn(mockAttributes); 
    Mockito.when(mockAttributes.get(Mockito.anyString())).thenReturn(mockAttribute); 
    Mockito.when(mockAttribute.get()).thenReturn(Mockito.anyObject()); 

    Mockito.when(mockCustomer.getCstCustGuid()).thenReturn(Mockito.anyString()); 
    Mockito.doNothing().when(mockCustomer).setCstCustGuid(Mockito.anyString()); 

Я получение InvalidUseOfMatchers исключение на линии:

Mockito.when(mockCustomer.getCstCustGuid()).thenReturn(Mockito.anyString()); 

Просьба помочь.

ответ

3

Вы не можете использовать Mockito.anyString() внутри thenReturn(). Его можно использовать только при использовании Mockito.when() или Mockito.verify(). Пример: Mockito.when(mockCustomer.getSomething(Mockito.anyString())).thenReturn(something);

Для вашего вопроса, вы должны заменить строку Mockito.when(mockCustomer.getCstCustGuid()).thenReturn(Mockito.anyString()); на

Mockito.when(mockCustomer.getCstCustGuid()).thenReturn(""); или

Mockito.when(mockCustomer.getCstCustGuid()).thenReturn(Mockito.mock(String.class));

+0

Это правильный первопричиной-вы не можете использовать Матчи возвращают «любой» экземпляр, но вы не можете и не должны издеваться над String в реальных тестах. Возвращение макетов _mockable типов, которыми вы управляете, просто отлично. –

Смежные вопросы