Bien, comencemos con un ejemplo bien simple de Test Driven de valo mento TDD orientado a proas unitaria.
Bueno, la idea crear una nueva prueba, pero comparando los dos objetos cuenta que tengan los mismos
input, es decir, mismos datos de ejemplo 2 objeto y comparar si realmente estas referencias son iguales,
porque por defecto, cuando se comparan dos objetos con el método equals, compara por referencia,
es decir, que sean diferentes instancias, diferente objeto, cada uno en distintos punteros o direcciones
en la memoria que no sea la misma referencia.
Pero podría modificar este comportamiento y comparar por valor en vez de por referencia y comparar,
por ejemplo, por los atributos que si el atributo persona sean iguales o del salios en iguales, entonces
los objetos sean iguales o sean considerados como iguales, pero van a ser objeto distinto almacenado
en diferentes direcciones de la memoria.
Bien, comencemos entonces vamos a crear otro método, pero esta vez, en vez de hacerlo manual, vamos
a hacer con Alt Insert Test Método, lo seleccionamos y lo creamos.
Cierto?
Lo vamos a renombrar, vamos a colocar text referencia de Quanta.
Bajamos y vamos a crear dos instancias idénticas.
Cuenta.
Bueno, de hecho, para simplificar New Cuenta.
Creamos el objeto, pasamos, por ejemplo, a John John Doe como persona Goma New Birth Décima le pasamos
a Salto, por ejemplo ocho mil novecientos coma nueve nueve nueve siete por proponer algo de esto.
Ahí tenemos, vamos a crear el objeto.
Entonces por acá sobre cuenta control alt recortÃ hoy tenemos cuenta Johnno en.
Bajamos.
Bueno, de hecho la vamos a replicar simplemente con Controlde en cualquier parte de la línea de cuenta
controlde y la replicamos.
Y acá colocamos cuenta dos y tenemos dos.
Cuenta que en teoría son exactamente iguales.
Eso es lo que tienen que probar en un principio.
Quizás nuestra lógica negocio sea correcto.
Si no son iguales, pasa la prueba.
Entonces vamos a colocar assert, pero en vez de equals vamos a colocar потом.
Y cual es perfecto?
Y cuál cuenta?
Acá pasamos dos valores que si compramos dos referencia, cuenta y cuenta dos, es decir, cuenta o
cuenta dos.
Vamos, a lo mejor cuenta acá y acá, cuenta donde cuenta.
Sería nuestro valor real o actual este objeto y esto sería nuestro valor esperado.
Entonces queremos comprar que todos sean distintos en diferentes instancias y por defecto debería ser
así.
No son iguales de RS.
Correcto.
Se debiese afirmar entonces vamos a ejecutar como siempre con control Schiff F10.
Y tenemos los tres métodos correcto.
Se fijan a que tenemos test, referencia, cuenta y paso la prueba.
No hay ningún problema.
Pero qué pasa si cambia la regla negocio ahora?
Ahora quiere comparar.
No por referencia.
Es decir, no por instancia, porque son dos ajito distinto.
Quiero comparar por valor.
Entonces tendré que cambiar acá.
Está acá.
Lo podríamos comentar o lo duplicamos?
Mejor control de lo duplicamos.
Acá lo comentamos para que lo tengamos.
Control diagonal o se large.
Comentamos y acá cambiamos.
En vez de Nott colocamos y cuando llega cambia un poco.
Cambia nuestro test.
Entonces deberían ser iguales ahora, pero como estamos desarrollando orientado pruebas unitaria, va
a fallar.
Después lo tenemos que implementar o refactorizar nuestro código para que esto sea correcto, sea válido.
Entonces vamos a probar.
Va a fallar.
Se fijan, falla este método?
Por qué?
Claro, porque son dos instancias.
Tinta Este apunta a un puntero en la memoria distinto que el de acá.
Son dos objetos diferentes.
A pesar de que tienen el mismo valor en sus atributos, pero actualmente son distintos.
Y eso es lo que tenemos que refactorizar.
La idea de que sean iguales.
Compare por valor cómo lo podemos hacer.
Bueno, vamos a cerrar acá.
Cerramos.
Nos vamos a ir a la clase.
Cuenta con control y acá tengo que implementar el método equals.
Sobrescribir el y cuál?
Pero intelige.
Bueno, lo podemos hacer manualmente comparando estos atributos en persona y salto al insert.
Acá sobrescribir método se fijan una forma sobreescribir el método y cual es perfecto.
Acá compara por defecto, por objeto, por instancias.
Pero la idea de comparar por atributos persona y salto.
Entonces podríamos hacer lo siguiente lo primero hacer un cast a este objeto que se esta pasando, que
es el cual con el que comparamos.
Entonces lo primero acá hacer el cast.
Ahora si el tipo cuenta le vamos a llamar se de cuenta igual objeto punto y coma bien, pero marca error
porque tenemos que hacer el cast.
Entonces acá con los paréntesis cerramos paréntesis y dentro cuenta se fijan, tenemos cuenta.
Ahora comparamos a qué tengo que validar primero validar por ejemplo, que personas sea distinto null
y que el saldo también sea distinto, nulo y luego compare con el.
Entonces, por ejemplo, if this punto persona si es igual a null si es igual a null or colocábamos
double pay saldo es igual a null.
Entonces te devolvemos fols proton olds.
No son iguales.
Tenemos que comprar siempre que los atributos primero si son null.
Devolvemos fors.
Por lo tanto no son iguales.
Ah, y también tenemos que comparar que tu objeto acá, que se pasa por referencia en el método por
argumento.
También tengo que comparar porque teme pudiera ser nulo y podríamos tener algún tipo de problema entonces.
If.
Objeto si es igual a Anul, bajamos, también devolvemos fols.
Fols.
Eso es primero validar que el objeto sea igual a null.
Devolvemos fours, luego los atributos, pero de la misma clase en cuestión.
Persona y lo que vamos a comparar.
Bueno, hacemos el caso y ahora comparamos, ya que tenemos todo validado.
Comparamos esto, lo quitamos, lo quitamos y lo vamos a cambiar por lo siguiente una prisión booleana
no es cierto si persona o persona.
Luego acabo con dispen que esté un poco más explícito.
Persona.
Punto igual.
Si es igual al atributo del objeto con el cuerpo, vamos a comparar en el equals objeto o C en realidad.
Porque en realidad es cuenta.
Acá decimos el cast cuenta c punto quiete persona.
Entonces compráramos persona con persona y el atributo persona de la clase con el atributo persona del
otro objeto de la instancia.
No sé si es igual esto perfecto, pero te temo que comparar con el saldo.
Si ambos son iguales.
Pensando lo mismo.
Diez diez.
Punto saldo.
El atributo saldo del objeto en cuestión.
Punto.
Y con el saldo del otro objeto.
C Punto.
Get saldo.
Entonces, si todo esto se cumple, perfecto, devolvemos true.
Pero si llega a fallar cualquiera de estas validaciones va a devolver fols.
Y no va a ser igual.
Incluso también podríamos hacer otra validación que el objeto que se está pasando por instancia acá,
sea del tipo cuenta y no de otro tipo de clase.
Eso también lo podríamos hacer acá con un OR, por ejemplo.
Bueno, si es igual a null or y si es distinto, así que lo voy a negar.
Es decir, si no es tipo de paréntesis y acá objeto instanceof de cuenta en cuenta y listo.
Esto de acá también valida que se anule.
De hecho, calidá lo dice condición objeto igual a null también está cubierto o validado por esta condición.
Entonces, de hecho, esto acá estaría.
Además, lo podemos dejar, sí, pero también está demás.
Entonces valíamos que el objeto se instancia aguanta no solamente un objeto nulo.
Validar, por ejemplo, que no nos pasen un string, por ejemplo, o qué tipo de otra clase.
Listo, ya tenemos el método equals y estamos comparando con salto y con personas que sean iguales.
Bien, volvemos.
Control dado cuenta test.
Se acuerdan?
Este fallaba porque no eran iguales.
Pero ahora como modificamos nuestro código, hicimos una refactorización implementando el método equals.
Ahora debería pasar la prueba.
Veamos.
La pausa de Vigen te correcto.
Vamos a ejecutar todos los métodos.
Pasan los Methos.
Ahora, qué pasa si acá es John Doh, acá es John hГroe, en vez de té colocamos Rohe, pasará la prueba.
Tenemos que probar.
Falla la prueba?
Claro, no son iguales.
Por qué cambió acá el nombre?
Incluso lo dejamos como estaba y probamos acá.
9 9, 9 9 en vez de 7.
Campear más acá debería ser distinto, quizá muy similar.
Se fijan, pasan todo menos test, referencia, lo mismo porque cambiamos acá.
2 Está bien, nuestro código ahora está valiendo bien afirmando mediante la instancia.
Volvemos a ejecutar y debería pasar.
Está bien con hacer y cuál es?
Ahora, si comentamos este.
Por supuesto que va a fallar porque va a esperar que no sean iguales.
Y como son iguales, va a fallar.
Pero lo dejamos así y continuamos en la siguiente clase con otro ejemplo.
Pero ya vamos a empezar a ver el tema de transferencia.
Vamos a implementar dos métodos el débito y crédito y ver qué pasa cuando nos transfieren un monto o
cuando nuestra cuenta transfiere un monto a otra cuenta y hacer el test, probar ese código.
Nos vemos en la siguiente clase.