En nuestro proyecto xUnit.CaducaRest vamos a crear una nueva clase llamada CategoriasTests esta clase tendrá todas las pruebas unitarias para la tabla Categorias. Vamos a probar la regla para validar que no se pueda crear una categoría con el mismo nombre.
Como comentarios indicamos que ya conocemos que existe una categoría con el nombre Analgésicos ya que este fue creado en la base de datos en memoria.
Como nombre le ponemos el nombre de la regla que vamos a probar, en el caso de la categoría la clase se llama AgregarNombreRegla, luego indicamos el caso a probar, en este caso NombreRepetido y al final agregamos el valor esperado, en este caso sería Falso, de esta forma indicamos que en la tabla Categoría hay una regla que debe regresar falso si el nombre ya existe.
En el constructor de la clase inicializamos la base de datos en memoria y el objeto locService.
Mandamos llamar a la función ValidarRegla de nuestra clase AgregarNombreRegla y el valor esperado debería ser falso, con Assert.False comprobamos que el valor regresado por la función sea False.
publicclassCategoriaTests{CaducaContext contexto;LocService locService;publicCategoriaTests() { contexto =newCaducaContextMemoria().ObtenerContexto(); locService =newMockLocService().ObtenerLocService(); } /// <summary> /// Validamos que no se pueda agregar una categoria con un nombre repetido /// El resultado debería ser falso /// </summary> [Fact]publicasyncTaskReglaNombreUnico_ConNombreRepetido_RegresaFalsoAsync() { //Inicialización de datos (Arrange)var categoriaDAO =newCategoriaDAO(contexto, locService); //Obtenemos la lista de categorías si esta vacía agregamos unaList<Categoria> categorias =awaitcategoriaDAO.ObtenerTodoAsync();if (categorias.Count==0) {categorias.Add(newCategoria { Clave =1, Nombre ="Analgésicos" }); } //Método a probar (Act)ReglaNombreUnico agregarNombreRegla =new ReglaNombreUnico(categorias[0].Id, categorias[0].Nombre, contexto, locService); //Comprobación de resultados (Assert) Assert.False(agregarNombreRegla.EsCorrecto()); } }
Por lo general en las pruebas unitarias se prueban todos los posibles casos, en nuestro caso la regla debe regresar true si el nombre no existe
/// <summary>/// Validamos que no se pueda agregar una categoria con un nombre repetido/// El resultado debería ser true/// </summary>[Fact]publicasyncTaskReglaNombreUnico_ConNombreNoRepetido_RegresaVerdaderoAsync(){ //Inicialización de datos (Arrange)var categoriaDAO =newCategoriaDAO(contexto, locService); //Obtenemos la lista de categorías si esta vacía agregamos unaList<Categoria> categorias =awaitcategoriaDAO.ObtenerTodoAsync();if (categorias.Count==0) {categorias.Add(newCategoria { Clave =1, Nombre ="Análgesicos" }); } //Método a probar (Act)ReglaNombreUnico agregarNombreRegla =newReglaNombreUnico (2,"Antibióticos", contexto, locService); //Comprobación de resultados (Assert)Assert.True(agregarNombreRegla.EsCorrecto());}
De esta forma nos aseguramos que futuros cambios a nuestro código no vayan a provocar nuevos errores.
Las funciones de la base de datos como agregar, borrar, modificar se deben probar como pruebas de integración