Ok. 
Mais tout ça m'évoque, du coup, deux autres points:
1.)
- j'ai fini par ramener dans la classe de test les 2 String
1 2
| String urlEnveloppe = "https://almdtsi.itn.ftgroup/qcbin/rest/domains/dom_g/projects/greenwich_dev";
String folderReleaseCible = urlEnveloppe+"/"+ Models.RELEASEFOLDER+"s/134"; |
à passer en paramètre à
verify(mockCCBRepos).readWithURL(new ObjectRequest().setURLEntity(folderReleaseCible));
pour essayer de comprendre ce que me voulait intelliJ
- je voulais donc passer exactement la même chose dans la classe de base que dans la classe de test
(et on sait maintenant pourquoi ça ne marchait quand même pas!
)
Or, à mon sens, d'après ce que j'ai justement appris de toutes mes recherches, c'est qu'une méthode de test ne doit pas tester les attributs d'une méthode, mais le bon fonctionnement de cette méthode, peu importe la valeur des attributs envoyés!
C'est à dire qu'à la limite on aurait même pu faire:
verify(mockCCBRepos).readWithURL(new ObjectRequest().setURLEntity("toto"));
ou
verify(mockCCBRepos).readWithURL(toto = new ObjectRequest());
ou
verify(mockCCBRepos).readWithURL(1 ObjectRequest mocké);
En gros envoyer n'importe quoi, du moment que le type du paramètre soit le bon!
Mais du coup, on se heurterait de nouveau aux problèmes d'instances différentes, dans ce cas là, non?
Là, j'ai encore un flou...
2.) quand tu dis
Or ce n'est pas le même, puisque tu l'as explictement instancié une deuxième fois (
il y a 2x l'invocation "new ObjectRequest" dans le code).
-> tu veux parler des 2 invocations (GIVEN + THEN), dans le code de la méthode de test?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| @Test
public void test_templateSearch() throws Exception {
// GIVEN: quand la situation est comme ceci
// (on configure le mock pour que lorsque l'on invoque readWithURL avec n'importe quel argument, il retourne 1 valeur cohérente)
ResponseEntity entity = mock(ResponseEntity.class);
when(entity.toString()).thenReturn("bidon");
when(mockCCBRepos.readWithURL((ObjectRequest) any())).thenReturn(entity);
CampagneCartouche or = new CampagneCartouche(); // TODO initialiser une valeur cohérente
// WHEN: et que je fais cela
instance.templateSearch(or);
// THEN: je m'attend à ce qu'il se passe ceci (tester le code de la méthode)
verify(mockCCBRepos).requestLoging("https://almdtsi.itn.ftgroup/qcbin/api/authentication/sign-in");
String urlEnveloppe = "https://almdtsi.itn.ftgroup/qcbin/rest/domains/dom_g/projects/greenwich_dev";
String folderReleaseCible = urlEnveloppe+"/"+ Models.RELEASEFOLDER+"s/134";
verify(mockCCBRepos).readWithURL(new ObjectRequest().setURLEntity(folderReleaseCible));
verify(mockCCBRepos).requestLoging("https://almdtsi.itn.ftgroup/qcbin/api/authentication/sign-out");
} |
OU
-> l'autre explication que je vois, étant que la classe de test est liée quelque part à la classe de base, et donc 1 invocation dans base + 1 invocation dans test = 2 invocations au total?
Mais je ne sais pas si je suis clair?
Partager