2015-08-26 1 views
0

Je fais un test de junit pour un module.Obtention d'une exception pendant les tests Junit

when(myDetailsFacade.getMyDetailsInfo(anyLong())).thenReturn(null); 
mrc.getFlowScoe().put("action", "create"); 
try{ 
    instance.initialiseForm(mrc, mpr); 
    }catch (Exception e){ 
     fail("Shouldn't get here"); 
    } 
model=(MyDetailsForm)mrc.getFlowScope().get("myDetailsFormModel"); 
assertNotNull(model); 
assertEquals(model.getNationality(), "USA"); 

et je reçois cette erreur

org.mockito.excetions.misusing.MissingMethodInvocationException: 
when()requires an argument which has to be a method call on a mock. 
For example 
when(mock.getArticles()).thenReturn(articles); 

en façade sur nous obtenons la valeur hardcode, comme.

private myDetails getMyDetailsData{ 
myDetails.setNationality("USA"); 
return myDetails; 
} 

Ceci est ma méthode initialiseform que j'essaie de tester.

public void initialiseForm (RequestContext requestContext, PortletRequest portletRequest){ 

requestContext.getFlowScope().put("getTitles", getTitles); 
requestContext.getFlowScope().put("getGender", getGender); 

BasicModel model = (BasicModel)requestContext.getFlowScope().get("BasicModel"); 
if(model == null){ 
model = new BasicModel(); 
} 

model.setEmpName("Edward"); 
} 

Et est la méthode getTitles ici même fichier java.

private Map <String, String> getTitles(){ 

option.put("Dr", "Dr"); 
option.put("Mr", "Mr"); 
return option; 

} 
+1

Pouvez-vous poster une plus grande partie de votre code entourant l'appel sur le faux? –

+0

Comment créez-vous 'myDetailsFacade'? – Edd

+0

Façade est rien que nous obtenons juste la valeur de code dur de la façade – Akash

Répondre

0

Comme allusion dans l'exception que vous avez reçu, la méthode statique when() est pour stubbing méthodes sur les objets fantaisie. Vous avez besoin de myDetailsFacade pour être un simulacre si vous voulez remplacer le résultat d'un appel de méthode. Essayez quelque chose comme (avec le type réel de myDetailsFacade bien sûr):

MyDetails myDetailsFacade= mock(MyDetails.class) 
when(myDetailsFacade.getMyDetailsInfo(anyLong())).thenReturn(null); 
+0

J'ai essayé mais en obtenant la même erreur, S'il vous plaît vérifier la question à nouveau je mets l'extrait de code que je veux tester. – Akash

+0

@Akash Je ne vois toujours pas l'endroit où vous affectez une valeur à 'myDetailsFacade'. Pouvez-vous fournir tous les détails du test qui ne fonctionne pas? – Edd

+0

S'il vous plaît jeter un oeil de ma méthode publique initialiseForm au code ci-dessus je veux faire un test de junit pour cela. – Akash