Mockito quand la méthode ne fonctionne pas
Je suis à l'aide de mockito comme se moquant de cadre. J'ai un scenerio ici, mon quand(abc.méthode()).thenReturn(valeur) ne retourne pas de valeur, au lieu de cela, elle renvoie null.
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();
}
Lorsque j'ai jamais exécuter le fichier de test le moment n'est pas de travail et je suis en utilisant mockito1.8.5 jar dans le buildpath. L'appel de service est moqué, mais renvoie la valeur null.
final DqCntlWfDefnTyp dqCntlWfDefnTyp = controlWfDefTypeService
.getDqCntlWfDefnTypCd(dqCntlWfDefn);
Cet objet dqCntlWfDefnTyp est null
J'ai fait cela avant et il n'y a pas de problème avec le moment, Il semble être de travailler avec les fichiers que j'ai fait avant. J'avais suivi la même procédure pour le fichier de test mais je ne pourrais pas comprendre la question. Quelqu'un peut s'il vous plaît aider moi
Merci à tous les gens à l'avance
source d'informationauteur Gopinathan
Vous devez vous connecter pour publier un commentaire.
Mockito maquette fonctionne lorsque nous moquer des objets faiblement.
Ici, c'est le changement que j'ai fait pour le faire fonctionner:
Au lieu de passer l'objet de la Maquette de la classe, j'ai passé la classe avec le Comparateur de
any()
et il fonctionne.Je pense avoir trouvé le problème, mais pas tout le crédit va à moi.
Puisque vous êtes en essayant de se moquer de 'dqCntlWfDefnTyp" dans votre classe de test et l'objet lui-même est instanciée dans la classe que vous essayez de test, vous inévitablement des questions. Le principal problème est que l'objet ne peut pas être moqué parce qu'il est recréé au cours de l'essai.
Il ya quelques options, mais le meilleur choix à mon humble avis, est à l'aide de PowerMockito. Vous serez en mesure de remplacer l'objet au sein de la classe qui est en train d'être testé avec l'un de vous moquer.
Un excellent exemple de cette utilisation de PowerMockito de @raspacorp sur ce question:
Et la classe de test...
J'ai eu le même problème. La solution pour moi a été de mettre la Mockito.quand(...).thenReturn(...); dans le @Avant-méthode de Configuration.