Ho seguito ciò che suggeriva @hoaz. Tuttavia, io sono sempre un'eccezione nullpointerMockito NullPointerException
@RunWith(MockitoJUnitRunner.class)
public class GeneralConfigServiceImplTest {
@InjectMocks private GeneralConfigService generalConfigService;
@Mock private SomeDao someDao;
@Mock private ExternalDependencyClass externalDependencyObject
@Test
public void testAddGeneralConfigCallDAOSuccess() {
when(someDao.findMe(any(String.Class))).thenReturn(new ArrayList<String>(Arrays.asList("1234")));
//println works here, I am able to get collection from my mocked DAO
// Calling the actual service function
generalConfigService.process(externalDependencyObject)
}
}
nel mio codice è come questo:
import com.xyz.ExternalDependencyClass;
public class GeneralConfigService{
private SomeDao someDao;
public void process(ExternalDependencyClass externalDependencyObject){
// function using Mockito
Collection<String> result = someDao.findMe(externalDependencyObject.getId.toString())
}
}
Ho notato anche che DAO era nulla così ho fatto questo (Solo per citare, ho fatto il passo seguente per provo, so che la differenza tra springUnit e Mockito o XYZ):
@Autowired
private SomeDao someDao;
soluzione @ John B risolto il mio problema. Tuttavia vorrei menzionare ciò che non ha funzionato per me. Questo è il mio test di unità aggiornato
@Test
public void testAddGeneralConfigCallDAOSuccess() {
/*
This does not work
externalDependencyObject.setId(new ExternalKey("pk_1"));
// verify statement works and I thought that the class in test when call the getId
// it will be able to get the ExternalKey object
//verify(externalDependencyObject.setId(new ExternalKey("pk_1")));
*/
// This works
when(externalDependencyObject.getId()).thenReturn(new ExternalKey("pk_1"));
when(someDao.findMe(any(String.Class))).thenReturn(new ArrayList<String>(Arrays.asList("1234")));
....
// Calling the actual service function
generalConfigService.process(externalDependencyObject)
}
di riferimento a questa domanda in:
How do I mock external method call with Mockito
How do I set a property on a mocked object using Mockito?
Perché stai prendendo in giro qualcosa che si sta autowiring? * Odori * come questo dovrebbe essere un puro test di integrazione in stile Spring o un puro test di simulazione. – Makoto
Ho provato a fare il passaggio @Autowired da quando ero in esecuzione nell'eccezione di NullPointer, ma è in corso un'eccezione anche dopo. Vedo che quando esegue il comando 'someDao.findMe (someObject.getId.toString()) 'NON si attiva la mia istruzione return Mock, ma invece si prova a valutare' someObject.getId.toString() '. Quando ho stampato il test per 'DaoDao.findMe', restituisce la collezione. Ho anche controllato il debugging, 'someDaoDao 'è già impostato su generalConfigService. Quindi non sono sicuro del motivo per cui sta valutando e non solo restituendo la mia collezione – Anuj