Para corregir un error en una aplicación, modifiqué un método llamado postLogin
agregando una llamada a un método existente llamado getShoppingCart
.
Código
protected void postLogin() {
getShoppingCart();
}
Sin embargo, no estoy seguro de cuál es la mejor manera de escribir una prueba unitaria postLogin
.
Enfoque 1
Utilice verificar de Mockito para verificar simplemente que se llamó al método.
verify(mock).getShoppingCart();
Enfoque 2
Pruebe el efecto secundario de la llamada al método obteniendo el valor del carrito de compras del usuario.
AssertNotNull(user.getShoppingCart());
¿Es un enfoque mejor que el otro?
getShoppingCart()
método tenga efectos secundarios, no necesita probar que se llama. Si tiene efectos secundarios, debería cambiar su nombre porque los getXXX()
métodos convencionales deberían ser idempotentes.
getNextValue
? Podría decirse que alguien podría decir "No lo llames getter; cambia el nombre a nextValue
", pero lo he visto getNext
antes. Quizás un mejor ejemplo sería un objeto que representa un electrón; ¿Qué pasa cuando llamo getPosition
? O peor,getPosition(); getVelocity();