Realicé la refactorización "Replace Method with Method Object" descrita por Beck.¿Cómo puedo probar los métodos en un objeto de método?
Ahora, tengo una clase con un método "run()" y un grupo de funciones miembro que descomponen el cálculo en unidades más pequeñas. ¿Cómo pruebo esas funciones miembro?
Mi primera idea es que mis pruebas unitarias sean básicamente copias del método "run()" (con diferentes inicializaciones), pero con aserciones entre cada llamada a las funciones miembro para verificar el estado del cálculo.
(estoy usando Python y el módulo unittest.)
class Train:
def __init__(self, options, points):
self._options = options
self._points = points
# other initializations
def run(self):
self._setup_mappings_dict()
self._setup_train_and_estimation_sets()
if self._options.estimate_method == 'per_class':
self._setup_priors()
self._estimate_all_mappings()
self._save_mappings()
def _estimate_all_mappings():
# implementation, calls to methods in this class
#other method definitions
Definitivamente tengo expectativas sobre lo que los estados de los miembros de los atributos deben estar antes y después de las llamadas a los diferentes métodos como parte de la implementación del método run()
. ¿Debo hacer afirmaciones sobre estos atributos "privados"? No sé de qué otro modo probar estos métodos.
La otra opción es que realmente no debería probar estos.
Algún código o pseudocódigo sería útil para comprender su pregunta. Según lo que has escrito, parece que puedes beneficiarte del método unittest.TestCase.setUp(). http://docs.python.org/library/unittest.html#unittest.TestCase.setUp – msw
He editado su pregunta con el código que ha proporcionado. ¿Puedes verificar que la sangría sea correcta y volver a editarla si es necesario? –
@ire_and_curses. Gracias, editado un poco. –