verify(mock.method()) — le test vert qui laissait passer un double appel
En Mockito, verify sans .called(1) explicite peut rester vert alors que la méthode part deux fois. Pourquoi la précision dans les tests protège le lecteur.
Pendant longtemps j'ai écrit verify(mock.method()) en pensant que .called(1) était la valeur par défaut.
Puis Michael en review : « tu vérifies quoi exactement là ? »
Et là, gros doute.

Le bug sous le radar
verify(mock.method()) était vert alors que la méthode partait deux fois. Le bug est passé sous le radar.
Sans .called(1) explicite, le test vérifie seulement que l'appel a eu lieu au moins une fois — pas qu'il a eu lieu exactement une fois. Un double appel (double requête réseau, double écriture) passe sans broncher.
La leçon
Le code se lit dix fois plus qu'il ne s'écrit. Sois précis pour le lecteur, et pour toi-même.
// Ambigu : vert même si la méthode part 2 fois
verify(mock.method());
// Explicite : échoue si l'appel n'est pas unique
verify(mock.method()).called(1);
Et toi, tu mets .called(1) explicite ou pas ?