Afin de corriger un bogue dans une application, j'ai modifié une méthode nommée postLogin
en ajoutant un appel à une méthode existante nommée getShoppingCart
.
Code
protected void postLogin() {
getShoppingCart();
}
Cependant, je ne sais pas quelle est la meilleure façon d'écrire un test unitaire postLogin
.
Approche 1
Utilisez la vérification de Mockito pour simplement vérifier que la méthode a été appelée.
verify(mock).getShoppingCart();
Approche 2
Testez l'effet secondaire de l'appel de méthode en récupérant la valeur du panier de l'utilisateur.
AssertNotNull(user.getShoppingCart());
Une approche est-elle meilleure que l'autre?
getShoppingCart()
méthode n'ait des effets secondaires, vous n'avez pas besoin de vérifier qu'elle s'appelle. S'il a des effets secondaires, vous devriez vraiment changer son nom car les getXXX()
méthodes devraient être idempotentes.
getNextValue
? On pourrait dire que quelqu'un pourrait dire "Ne l'appelez pas un getter; changez le nom en nextValue
", mais j'ai déjà vu getNext
utilisé auparavant. Un meilleur exemple serait peut-être un objet représentant un électron; que se passe-t-il lorsque j'appelle getPosition
? Ou pire,getPosition(); getVelocity();