es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Prueba unitaria para una sentencia de cambio en Angular.

Soy un traductor de español que traduce documentos de IT. Traduce lo siguiente al español. No traduzcas el código ni la salida en markdown

Soy nuevo en las pruebas unitarias de Angular y no sé cómo probar este switch:


displayBadge(text: any) {
switch (text) {
case 'blabla':
return 'badge badge-pill badge-success';
case 'lalala':
return 'badge badge-pill badge-secondary';
case 'uuuu':
return 'badge badge-pill badge-warning';
case 'ooooo':
return 'badge badge-pill badge-warning';
case 'eeee':
return 'badge badge-pill badge-warning';
case 'zzzzz':
return 'badge badge-pill badge-dark';
case 'aaaaa':
return 'badge badge-pill badge-dark';
case 'qqqqq':
return 'badge badge-pill badge-success';
case 'ccccc':
return 'badge badge-pill badge-warning';
case 'rrrrr':
return 'badge badge-pill badge-success';
case 'ttttt':
return 'badge badge-pill badge-warning';
case 'fffff':
return 'badge badge-pill badge-success';
default:
return '';

Estoy usando el complemento Simontest en VSCODE y la cobertura de código siempre me dice que me faltan como un 80% de la cobertura, que es este switch.

He intentado de esta manera en mi archivo spec.ts:


it('texto aaaaa', () => {
component.text ='aaaaa'
component.displayBadge(component.text);
expect('badge badge-pill badge-secondary');
});

pero no funciona.

El texto está definido así en mi archivo ts:

@Input()
text!: any;

He visto otros posts sobre cómo probar un switch, he intentado todo lo que he visto aquí en stack y en general en Google, pero SimonTest siempre me dice que esta función no está probada.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para probar la instrucción de cambio en el método displayBadge, puedes escribir varios casos de prueba donde pases diferentes valores para text y verifiques la salida esperada de la instrucción de cambio.

    Aquí tienes un ejemplo de cómo puedes probar este método utilizando Jasmine:

    it('debe devolver una distinción de éxito para el texto blabla', () => {
      const result = component.displayBadge('blabla');
      expect(result).toBe('badge badge-pill badge-success');
    });
    
    it('debe devolver una distinción secundaria para el texto lalala', () => {
      const result = component.displayBadge('lalala');
      expect(result).toBe('badge badge-pill badge-secondary');
    });
    
    // añade más casos de prueba para otros posibles valores de texto
    

    En cada caso de prueba, primero llamas al método con un valor específico de text y almacenas el resultado en una variable. Luego utilizas expect para verificar que el resultado coincide con la salida esperada para ese valor de texto particular.

    En tu caso de prueba de ejemplo, falta una afirmación. Deberías cambiarlo a algo como esto:

    it('debe devolver una distinción secundaria para el texto aaaaa', () => {
      const result = component.displayBadge('aaaaa');
      expect(result).toBe('badge badge-pill badge-dark');
    });
    

    Ten en cuenta que para que esto funcione, debes asegurarte de que component esté correctamente instanciado y se proporcionen las dependencias o entradas necesarias.

Comments are closed.