Descarga y explora el proyecto StringManipulation

Resumen

Antes de escribir tu primera prueba unitaria en .NET, necesitas un proyecto base con funciones reales que puedas validar. El proyecto StringManipulation cumple ese rol: es una librería de utilidades para manipular cadenas de texto que vas a usar como campo de práctica durante todo el curso.

¿Dónde descargo el proyecto base del curso?

El repositorio está en GitHub y lo encuentras en los recursos de la clase. Tiene dos branches que sirven exactamente para lo mismo: master y código-base. Cualquiera de los dos te entrega el proyecto limpio, con todas las funcionalidades listas pero sin pruebas implementadas.

Tienes dos formas de obtenerlo:

  • Clonar el branch directamente con Git.
  • Descargar el .zip desde la interfaz de GitHub.

Una vez descargado, te recomiendo crear un repositorio nuevo en tu cuenta personal de GitHub y subir ahí el código. Así llevas tu propio historial de cambios mientras avanzas con los ejercicios.

¿Qué diferencia hay entre el branch master y código-base? Ninguna a nivel de contenido. Ambos contienen el mismo proyecto base sin pruebas. Puedes elegir el que prefieras [00:55].

¿Qué hace la librería StringManipulation?

El proyecto representa lo que sería una library real dentro de un sistema distribuido. La idea es que la imagines como un componente transversal que podría consumirse desde una API, una aplicación web o cualquier otro servicio que necesite trabajar con strings.

La clase principal se llama StringOperations y agrupa funciones que reciben cadenas de caracteres y devuelven un resultado transformado. Esto es clave para entender por qué es un buen candidato a pruebas unitarias: cada método tiene entradas y salidas claras, sin dependencias externas pesadas.

¿Cuáles son las funciones disponibles para probar?

Dentro de StringOperations vas a encontrar utilidades como estas [02:30]:

  • ConcatenateStrings: une dos cadenas en una sola.
  • ReverseString: invierte el orden de los caracteres.
  • GetStringLength: devuelve el tamaño de la cadena.
  • RemoveWhiteSpaces: elimina espacios en blanco.
  • TruncateString: corta el string según un máximo de caracteres.
  • IsPalindrome: verifica si una palabra es palíndromo.
  • CountOccurrences: cuenta cuántas veces aparece un carácter.
  • PluralizeWord: convierte una palabra al plural en inglés.
  • QuantityInWords: escribe en letras la cantidad de un objeto.
  • ReadFile: lee el contenido de un archivo como string.
  • Conversor de números romanos a enteros.

Cada función tiene particularidades. Esas particularidades son justo lo que te va a permitir escribir distintos tipos de pruebas y enfrentar retos progresivos a lo largo del curso.

¿Cómo verifico que el proyecto funciona antes de escribir pruebas?

La clase Program actúa como cliente de la librería. Usa Console.WriteLine y un menú numerado para que interactúes con cada función desde la consola. Su único propósito es darte una forma rápida de explorar el comportamiento real antes de escribir asserts.

Al ejecutar el proyecto en Visual Studio, ves un menú con todas las opciones. Algunos ejemplos rápidos que puedes correr:

  • Opción 5, TruncateString: escribes Hola a todos desde Platzi y le pasas un máximo de 6 caracteres. La función te devuelve la cadena recortada [05:50].
  • Opción 8, PluralizeWord: escribes car y obtienes cars. Si pruebas con city, devuelve cities, que es un caso bastante más complejo porque cambia la terminación [06:35].
  • Opción 10, números romanos: escribes VI y la función devuelve 6 [07:05].

¿Por qué usar una librería de strings para aprender pruebas unitarias? Porque cada función es pequeña, determinista y sin dependencias externas. Eso te deja enfocarte en la lógica de la prueba, no en mocks ni configuración.

¿Qué hago después de explorar las funciones?

Antes de pasar a la siguiente clase, dale una vuelta completa al menú. Prueba cada opción con valores normales y también con casos raros: cadenas vacías, palabras con tildes, números fuera de rango. Esa exploración manual te va a dar pistas sobre qué escenarios vale la pena cubrir cuando empieces a escribir las pruebas con xUnit.

Entre más casos límite detectes ahora, más sólidas serán las pruebas que escribas después. ¿Qué función crees que va a ser la más difícil de probar? Cuéntame en los comentarios cuál te llamó la atención.