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à passer en paramètre à
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 String urlEnveloppe = "https://almdtsi.itn.ftgroup/qcbin/rest/domains/dom_g/projects/greenwich_dev"; String folderReleaseCible = urlEnveloppe+"/"+ Models.RELEASEFOLDER+"s/134";pour essayer de comprendre ce que me voulait intelliJ
Code : Sélectionner tout - Visualiser dans une fenêtre à part verify(mockCCBRepos).readWithURL(new ObjectRequest().setURLEntity(folderReleaseCible));
- 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:
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part verify(mockCCBRepos).readWithURL(new ObjectRequest().setURLEntity("toto"));
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part verify(mockCCBRepos).readWithURL(toto = new ObjectRequest());
En gros envoyer n'importe quoi, du moment que le type du paramètre soit le bon!
Code : Sélectionner tout - Visualiser dans une fenêtre à part verify(mockCCBRepos).readWithURL(1 ObjectRequest mocké);
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-> tu veux parler des 2 invocations (GIVEN + THEN), dans le code de la méthode de test?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).
OU
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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"); }
-> 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