Sto usando mockito come quadro di derisione. Ho uno scenerio qui, il mio quando (abc.method()). ThenReturn (valore) non restituisce valore, invece restituisce null.Mockito quando il metodo non funziona
public class DQExecWorkflowServiceImplTest {
@InjectMocks
DQExecWorkflowServiceImpl dqExecWorkflowServiceImpl = new DQExecWorkflowServiceImpl();
@Mock
private DQUtility dqUtility;
@Mock
private DqExec dqExec;
@Mock
private DqCntlDefn dqCntlDefn;
@Mock
private DqCntlWfDefn dqCntlWfDefn;
@Mock
private DqCntlWfDefnTyp dqCntlWfDefnTyp;
@Mock
private IDQControlWfDefTypeService controlWfDefTypeService;
@Before
public void setUp() throws Exception {
dqExec = new DqExec();
dqCntlWfDefn = new DqCntlWfDefn();
dqUtility = new DQUtility();
dqCntlWfDefnTyp = new DqCntlWfDefnTyp();
dqCntlWfDefnTyp.setDqCntlWfDefnTypCd("MIN_INCLUSIVE_VAL");
dqExecWorkflowServiceImpl
.setControlWfDefTypeService(controlWfDefTypeService);
}
@Test
public void testExecuteWorkflow() {
when(controlWfDefTypeService.getDqCntlWfDefnTypCd(dqCntlWfDefn))
.thenReturn(dqCntlWfDefnTyp);
dqExecWorkflowServiceImpl.executeWorkflow(dqExec, dqCntlWfDefn);
}
}
classe Java
@Override
public DqCntlWfExec executeWorkflow(final DqExec dqExec,
final DqCntlWfDefn dqCntlWfDefn) {
final DqCntlWfExec dqCntlWfExec = new DqCntlWfExec();
dqCntlWfExec.setDqCntlWfExecEffDt(dqUtil.getDefaultEffectiveDt());
dqCntlWfExec.setDqCntlWfExecExpDt(dqUtil.getDefaultExpiryDt());
dqCntlWfExec.setDqCntlWfDefn(dqCntlWfDefn);
dqCntlWfExec.setDqExec(dqExec);
final DqCntlWfDefnTyp dqCntlWfDefnTyp = controlWfDefTypeService
.getDqCntlWfDefnTypCd(dqCntlWfDefn);
String workflowType = null;
if(null!=dqCntlWfDefnTyp){
workflowType = dqCntlWfDefnTyp.getDqCntlWfDefnTypCd();
}
Quando mai ho eseguito il file di test il cui non funziona e sto usando vaso mockito1.8.5 nel buildpath. La chiamata di servizio viene derisa ma restituisce il valore nullo.
final DqCntlWfDefnTyp dqCntlWfDefnTyp = controlWfDefTypeService
.getDqCntlWfDefnTypCd(dqCntlWfDefn);
Questa dqCntlWfDefnTyp oggetto è nullo
ho fatto prima e non c'era alcun problema con il momento, sembra di poter lavorare con i file che ho fatto prima. Avevo seguito la stessa procedura per il file di test ma non riuscivo a capire il problema. Qualcuno può aiutarmi
Grazie a tutte le persone in anticipo
Provare a ridurre questo ad un esempio più piccolo, è piuttosto illeggibile. E spero davvero che quei nomi non siano sotto il tuo controllo, perché semplicemente non ci sono scuse per "setDqCntlWfExecEffDt". Nota in particolare quanto il codice è incoerente se utilizzare o meno un'abbreviazione: 'setDqCntlWfExecEffDt' vs' getDefaultEffectiveDt', 'executeWorkflow' vs' DqCntlWfExec', ecc. Seriamente, il codice potrebbe essere inviato a TheDailyWTF così com'è. –
Il codice è stato rifattorizzato e reso leggibile – Gopinathan
È possibile aggiungere l'errore/l'output? Come fai a sapere che è "null"? Lo stai deducendo da 'workflowType' ... potrebbe essere così?getDqCntlWfDefnTypCd() 'sta restituendo' null'? Ecc ... FWIW, penso che il codice originale possa contenere la chiave per questo. :-) – Jonathan