Refactorización y Validación de Código en Pruebas Unitarias
Clase 31 de 37 • Curso de Introducción a Laravel 6
Resumen
¿Cómo lograr un mejor entendimiento y calidad en el código con Refactorización y Pruebas?
En el mundo del desarrollo, mantener un código limpio y comprensible es crucial para la eficiencia del equipo y la calidad del producto. En esta oportunidad, exploraremos cómo la refactorización y la implementación de pruebas pueden mejorar significativamente un proyecto, aumentando su legibilidad sin alterar su funcionalidad. Aprenderás cómo estas técnicas no solo mejoran el código, sino que también lo preparan para futuras expansiones y modificaciones.
¿Qué significa la Refactorización en programación?
La refactorización es el acto de reestructurar un código existente sin cambiar su comportamiento observable. Esto mejora sus atributos de mantenibilidad y legibilidad, facilitando su modificación y extensión en el futuro. Un ejemplo práctico es crear métodos constructores y utilizar propiedades que representen entidades de manera más clara y organizada.
Ejemplo de código de refactorización en PHP:
class PostTest extends TestCase
{
protected $post;
public function __construct(Post $post)
{
$this->post = $post;
}
public function testExample()
{
// Your test logic here
}
}
¿Cómo asegurar que un post no se guarde en blanco?
Es vital que un sistema gestione las entradas de datos de manera precisa para evitar inconsistencias, asegurando que campos obligatorios, como el título, no queden vacíos. Para esto, se utiliza una serie de pruebas unitaria que verifica que la aplicación no permita el guardado de datos sin un título.
Casos de prueba en PHP:
public function testTitleIsRequired()
{
$response = $this->post('/posts', [
'title' => '',
]);
$response->assertStatus(422);
$response->assertJsonValidationErrors('title');
}
¿Por qué es importante gestionar los errores HTTP correctamente?
Cuando una aplicación intenta guardar datos inválidos, debe responder con un error HTTP adecuado para orientar al usuario o al sistema en cuanto a lo sucedido. El código de estado 422 es comúnmente utilizado para describir un error donde la solicitud está bien formada, pero la semántica es incorrecta, como un formulario sin un título obligatorio.
Implementación de manejo de errores:
-
Crear un request de validación:
class PostRequest extends FormRequest { public function rules() { return [ 'title' => 'required', ]; } }
-
Configurar el controlador para uso del request:
use App\Http\Requests\PostRequest; class PostController extends Controller { public function store(PostRequest $request) { // Store logic here } }
¿Por qué crear una prueba dedicada a validaciones?
La creación de pruebas separadas para cada tipo de validación fortalece la robustez del software, asegurando que futuras modificaciones no rompan funcionalidades previamente cubiertas. Esto ayuda a mantener un código seguro y documentado. Una vez que superas la fase de pruebas y todos los tests pasan satisfactoriamente, es una señal de que el código está listo para producción.
Aplicación de Test Driven Development (TDD):
- Primero, redacte una prueba que falle (rojo).
- Implementa el cambio necesario para pasar la prueba (verde).
- Refactoriza el código para mejorar su calidad sin afectar el test (no cambiar el comportamiento observable).
Al seguir esta metodología, no solo garantizas que tu código funcione correctamente, sino que también mantienes un estándar de calidad que es fácil de seguir y comprendido por otros desarrolladores.