Pruebas unitarias de AngularJS con Karma y Jasmine

โšก Resumen inteligente

Las pruebas unitarias de AngularJS con Karma y Jasmine verifican controladores, directivas y servicios de forma aislada. Karma ejecuta las especificaciones en navegadores reales, Jasmine proporciona la sintaxis de aserciones y angular-mocks inyecta dependencias sin necesidad de un servidor en producciรณn.

  • ๐Ÿงฑ Divisiรณn de herramientas: Karma es el ejecutor de pruebas, Jasmine es el marco de especificaciรณn y angular-mocks proporciona herramientas de ayuda para la inyecciรณn de dependencias.
  • โš™๏ธ Ruta de instalaciรณn: Instala karma, karma-chrome-launcher, karma-jasmine y karma-cli a travรฉs de npm, y luego genera karma.conf.js.
  • ๐Ÿ“ Regla de configuraciรณn: La matriz de archivos debe incluir angular.js, angular-mocks.js, los archivos fuente de la aplicaciรณn y la carpeta de pruebas en ese orden.
  • ๐ŸŽ›๏ธ Prueba del controlador: Inyecta el servicio $controller, pasa un objeto $scope simulado y, a continuaciรณn, verifica los valores que asigna el controlador.
  • ๐Ÿงฉ Pruebas de directivas: Utilice $compile con $rootScope, llame a $digest e inspeccione el marcado renderizado que devuelve la directiva.
  • ๐ŸŒ Capa de extremo a extremo: ProtracTor controla una aplicaciรณn en ejecuciรณn y cuenta las filas repetidas producidas por ng-repeat.
  • ๐Ÿ“Œ Estado del soporte: AngularJS llegรณ al final de su ciclo de vida el 31 de diciembre de 2021, por lo que este flujo de trabajo debe considerarse como conocimiento de mantenimiento de sistemas heredados.

Pruebas unitarias de AngularJS con Karma y Jasmine

Una de las caracterรญsticas mรกs brillantes de AngularJS es la Pruebas aspecto. Cuando los desarrolladores en Google Al desarrollar AngularJS, tuvieron en cuenta las pruebas y se aseguraron de que todo el marco de trabajo de AngularJS fuera comprobable.

En AngularJS, las pruebas se realizan normalmente con Karma (un framework). Si bien es posible realizar pruebas de AngularJS sin Karma, este framework ofrece una funcionalidad tan excelente para probar cรณdigo AngularJS que su uso resulta muy recomendable.

โš ๏ธ Nota de versiรณn: AngularJS (versiรณn 1.x) llegรณ al final de su ciclo de vida oficial el 31 de diciembre de 2021, y ProtracTor se retirรณ en agosto de 2023. El flujo de trabajo descrito en esta pรกgina sigue siendo vรกlido para el mantenimiento de aplicaciones AngularJS 1.x existentes. Los proyectos nuevos deben usar una versiรณn moderna de Angular con un ejecutor compatible.

Introducciรณn e instalaciรณn del marco Karma.

Karma es un herramienta de automatizaciรณn de pruebas creado por el equipo de AngularJS en GoogleEl primer paso para usar Karma es instalarlo. Karma se instala mediante npm (un gestor de paquetes que facilita la instalaciรณn de mรณdulos en una mรกquina local).

Instalaciรณn del Karma

La instalaciรณn de Karma a travรฉs de npm se realiza en un proceso de dos pasos.

Paso 1) Ejecute la siguiente lรญnea desde la lรญnea de comando

npm install karma karma-chrome-launcher karma-jasmine --save-dev

Donde,

  1. npm es la utilidad de lรญnea de comandos del gestor de paquetes de Node.js que se utiliza para instalar mรณdulos personalizados en cualquier mรกquina. Viene incluido Node.js.
  2. El parรกmetro de instalaciรณn indica a la utilidad de lรญnea de comando npm que se requiere instalaciรณn.
  3. Hay 3 bibliotecas especificadas en la lรญnea de comando que son necesarias para trabajar con karma.
    • karma es la biblioteca principal que se utilizarรก con fines de prueba.
    • karma-chrome-launcher es una biblioteca separada que permite que el navegador Chrome reconozca los comandos karma.
    • karma-jasmine: esto instala jasmine, que es un marco dependiente de Karma.

Paso 2) El siguiente paso es instalar la utilidad de lรญnea de comandos karma. Esto es necesario para ejecutar comandos de lรญnea de karma. La utilidad karma line se utilizarรก para inicializar el entorno de karma para realizar pruebas.

Para instalar la utilidad de lรญnea de comando, ejecute la siguiente lรญnea desde la lรญnea de comando

npm install -g karma-cli
  • karma-cli se utiliza para instalar la interfaz de lรญnea de comandos de karma, que se usarรก para escribir los comandos de karma en dicha interfaz. La opciรณn -g la instala globalmente, de modo que el comando karma estรฉ disponible desde cualquier carpeta.

Configuraciรณn del marco Karma.

El siguiente paso es configurar karma, lo cual se puede hacer mediante el comando

karma init

Despuรฉs de ejecutar el paso anterior, karma crearรก un archivo karma.conf.js. El archivo probablemente se verรก como el fragmento que se muestra a continuaciรณn.

files: [
  'node_modules/angular/angular.js',
  'node_modules/angular-mocks/angular-mocks.js',
  'lib/app.js',
  'tests/*.js'
]

Los archivos de configuraciรณn anteriores le indican al motor de ejecuciรณn de Karma lo siguiente

  1. angular.js โ€“ Esto le indica a Karma que tu aplicaciรณn depende de los mรณdulos principales de AngularJS.
  2. angular-mocks.js โ€“ Esto le indica a Karma que utilice la funcionalidad de pruebas unitarias para AngularJS del archivo angular-mocks.js.
  3. Todos los archivos principales de la aplicaciรณn o de la lรณgica empresarial estรกn presentes en la carpeta lib de su aplicaciรณn.
  4. La carpeta de pruebas contendrรก todas las pruebas unitarias.

๐Ÿ’ก Consejo: El orden importa dentro del array de archivos. angular.js debe cargarse antes que angular-mocks.js, y ambos deben cargarse antes que el cรณdigo de tu aplicaciรณn; de lo contrario, el inyector no estarรก disponible cuando se ejecuten las especificaciones.

Para comprobar si karma estรก funcionando, cree un archivo llamado Sample.js, ingrese el siguiente cรณdigo y colรณquelo en el directorio de prueba.

describe('Sample test', function() {
  it('Condition is true', function() {
    expect('AngularJS').toBe('AngularJS');
  });
});

El cรณdigo anterior tiene los siguientes aspectos

  1. La funciรณn de descripciรณn se utiliza para dar una descripciรณn de la prueba. En nuestro caso, le damos la descripciรณn "Prueba de muestra" a nuestra prueba.
  2. La funciรณn 'it' se utiliza para darle un nombre a la prueba. En nuestro caso, le damos el nombre a nuestra prueba como "La condiciรณn es verdadera". El nombre de la prueba debe ser significativo.
  3. La combinaciรณn de las palabras clave "esperar" y "toBe" indica cuรกl es el valor esperado y real del resultado de la prueba. Si el valor real y el esperado son iguales, entonces la prueba pasarรก, de lo contrario fallarรก.

Cuando ejecute la siguiente lรญnea en el sรญmbolo del sistema, se ejecutarรก el archivo de prueba anterior

karma start

El siguiente resultado estรก tomado del IDE. Webstorm en el que se llevaron a cabo los pasos anteriores.

Configuraciรณn del marco Karma

  1. La salida viene en el explorador Karma dentro Webstorm. Esta ventana muestra la ejecuciรณn de todas las pruebas definidas en el marco de karma.
  2. Aquรญ puede ver que se muestra la descripciรณn de la prueba ejecutada que es โ€œPrueba de muestraโ€.
  3. A continuaciรณn, puede ver que se ejecuta la prueba en sรญ que tiene el nombre "La condiciรณn es verdadera".
  4. Tenga en cuenta que todas las pruebas tienen el รญcono verde "Aceptar" al lado, lo que simboliza que todas las pruebas pasaron.

ยฟQuรฉ es Jasmine en las pruebas unitarias de AngularJS?

Karma decide dรณnde se ejecutan las pruebas, mientras que Jasmine decide cรณmo se escriben. Jasmine es un marco de especificaciรณn basado en el comportamiento que proporciona el vocabulario utilizado en todos los ejemplos de esta pรกgina, por lo que el adaptador karma-jasmine se instala junto con el ejecutor.

Jazmรญn aporta cuatro elementos bรกsicos:

  • describir(): Agrupa las especificaciones relacionadas en un conjunto y acepta una descripciรณn legible de la unidad que se estรก probando.
  • รฉl(): Declara una รบnica especificaciรณn. El nombre debe indicar el comportamiento que se estรก verificando, en lugar del mรฉtodo que se estรก llamando.
  • expect() con comparadores: Compara un valor real con uno esperado. Los comparadores comunes incluyen toBe, toEqual, toContain y toBeDefined.
  • beforeEach() y afterEach(): Realiza la configuraciรณn inicial y final antes y despuรฉs de cada especificaciรณn, lo que garantiza la independencia de cada prueba.

Jasmine tambiรฉn proporciona espรญas. Un espรญa reemplaza una funciรณn real con una grabaciรณn que la sustituye, de modo que se puede probar un controlador sin llamar a un endpoint HTTP real. Dado que Jasmine no necesita DOM ni ninguna biblioteca de aserciones propia, la combinaciรณn de Karma y Jasmine sigue siendo la forma mรกs ligera de ejecutar AngularJS. JavaPruebas unitarias de script.

Prueba de controladores AngularJS

El marco de prueba de karma tambiรฉn tiene la funcionalidad de probar los controladores de un extremo a otro. Esto incluye pruebas del objeto $scope que se utiliza dentro de los Controladores.

Veamos un ejemplo de cรณmo podemos lograrlo.

En nuestro ejemplo,

Primero necesitarรญamos definir un controlador. Este controlador llevarรญa a cabo los pasos mencionados a continuaciรณn.

  1. Cree una variable ID y asรญgnele el valor 5.
  2. Asigne la variable ID al objeto $scope.

Nuestra prueba comprobarรก la existencia de este controlador y tambiรฉn comprobarรก si la variable ID del objeto $scope estรก configurada en 5.

Primero debemos asegurarnos de que se cumpla el siguiente requisito previo

Instala la biblioteca angular-mocks a travรฉs de npm. Esto se puede hacer ejecutando la siguiente lรญnea en la consola de comandos.

npm install angular-mocks --save-dev

Lo siguiente es modificar el archivo karma.conf.js para garantizar que se incluyan los archivos correctos para la prueba. El siguiente segmento solo muestra los archivos que forman parte de karma.conf.js que deben modificarse

files: ['lib/angular.js', 'lib/angular-mocks.js', 'lib/index.js', 'test/*.js']
  • El parรกmetro "archivos" bรกsicamente le dice a Karma todos los archivos necesarios para la ejecuciรณn de las pruebas.
  • Los archivos angular.js y angular-mocks.js son necesarios para ejecutar las pruebas unitarias de AngularJS.
  • El archivo index.js contendrรก nuestro cรณdigo para el controlador
  • La carpeta de prueba contendrรก todas nuestras pruebas de AngularJS.

A continuaciรณn se muestra nuestro cรณdigo AngularJS, que se almacenarรก como un archivo Index.js en la carpeta de pruebas de nuestra aplicaciรณn.

El cรณdigo siguiente simplemente hace lo siguiente:

  1. Crear una Mรณdulo AngularJS llamada aplicaciรณn de muestra
  2. Crea un controlador llamado AngularJSController
  3. Crea una variable llamada ID, dale un valor de 5 y asรญgnala al objeto $scope
var sampleApp = angular.module('sampleApp', []);
sampleApp.controller('AngularJSController', function($scope) {
  $scope.ID = 5;
});

Una vez que el cรณdigo anterior se ejecute correctamente, el siguiente paso serรญa crear un Caso de prueba para garantizar que el cรณdigo se haya escrito y ejecutado correctamente.

El cรณdigo para nuestra prueba serรก el que se muestra a continuaciรณn.

El cรณdigo estarรก en un archivo independiente llamado ControllerTest.js, que se colocarรก en la carpeta de pruebas. El cรณdigo que aparece a continuaciรณn solo realiza las siguientes tareas clave:

  1. Funciรณn beforeEach: esta funciรณn se utiliza para cargar nuestro mรณdulo AngularJS llamado 'sampleApp' antes de la ejecuciรณn de la prueba. Tenga en cuenta que este es el nombre del mรณdulo en un archivo index.js.
  2. El objeto $controller se crea como un objeto simulado para el controlador โ€œAngularJSControllerโ€, que se define en nuestro archivo index.js. En cualquier prueba unitaria, un objeto simulado representa un objeto ficticio que se utilizarรก para la prueba. Este objeto simulado recrearรก el comportamiento de nuestro controlador.
  3. beforeEach(inject(function(_$controller_): esto se usa para inyectar el objeto simulado en nuestra prueba para que se comporte como el controlador real.
  4. var $ alcance = {}; Este es un objeto simulado que se estรก creando para el objeto $scope.
  5. var controller = $controller('AngularJSController', { $scope: $scope }); โ€“ Aquรญ estamos comprobando la existencia de un controlador llamado 'AngularJSController'. Aquรญ tambiรฉn estamos asignando todas las variables de nuestro objeto $scope en nuestro controlador en el archivo Index.js al objeto $scope en nuestro archivo de prueba.
  6. Finalmente, estamos comparando $scope.ID con 5
describe('AngularJSController', function() {
  beforeEach(module('sampleApp'));

  var $controller;

  beforeEach(inject(function(_$controller_){
    $controller = _$controller_;
  }));

  describe('$scope.ID', function() {
    it('Check the scope object', function() {
      var $scope = {};
      var controller = $controller('AngularJSController', { $scope: $scope });
      expect($scope.ID).toEqual(5);
    });
  });
});

La prueba anterior se ejecutarรก en el navegador karma y darรก el mismo resultado que se mostrรณ en el tema anterior.

Prueba de directivas AngularJS

El marco de pruebas Karma tambiรฉn tiene la funcionalidad para probar directivas personalizadas. Esto incluye la plantilla.URLque se utilizan dentro de directivas personalizadas.

Veamos un ejemplo de cรณmo podemos lograrlo.

En nuestro ejemplo, primero definiremos una directiva personalizada que hace lo siguiente

  1. Cree un mรณdulo AngularJS llamado sampleApp
  2. Crea una directiva personalizada con el nombre guru99.
  3. Cree una funciรณn que devuelva una plantilla con una etiqueta de encabezado que muestre el texto "Esto es prueba de AngularJS".
var sampleApp = angular.module('sampleApp', []);
sampleApp.directive('guru99', function () {
  return {
    restrict: 'E',
    replace: true,
    template: '<h1>This is AngularJS Testing</h1>'
  };
});

Una vez que el cรณdigo anterior se ejecute correctamente, el siguiente paso serรญa crear un caso de prueba para garantizar que el cรณdigo se haya escrito y ejecutado correctamente. El cรณdigo para nuestra prueba serรก el que se muestra a continuaciรณn.

El cรณdigo estarรก en un archivo independiente llamado DirectiveTest.js, que se colocarรก en la carpeta de pruebas. El cรณdigo que aparece a continuaciรณn solo realiza las siguientes tareas clave:

  1. Funciรณn beforeEach: esta funciรณn se utiliza para cargar nuestro mรณdulo AngularJS llamado 'sampleApp' antes de la ejecuciรณn de la prueba.
  2. El servicio $compile se utiliza para compilar la directiva. Este servicio es obligatorio y debe declararse para que AngularJS pueda usarlo para compilar nuestra directiva personalizada.
  3. El `$rootScope` es el รกmbito principal de cualquier aplicaciรณn AngularJS. Ya hemos visto el objeto `$scope` del controlador en capรญtulos anteriores. El objeto `$scope` es un objeto hijo del objeto `$rootScope`. Esto se declara aquรญ porque estamos modificando una etiqueta HTML en el DOM mediante nuestra directiva personalizada. Por lo tanto, necesitamos usar el servicio `$rootScope`, que detecta cualquier cambio dentro del documento HTML.
  4. var elemento = $compile(โ€œ โ€)($rootScope) โ€“ Esto se utiliza para comprobar si nuestra directiva se inyecta como deberรญa. La directiva estรก registrada con el nombre en formato camel case guru99, por lo que AngularJS coincide con el elemento en minรบsculas. en el marcado. Por lo tanto, esta instrucciรณn se utiliza para realizar esa verificaciรณn.
  5. expect(element.html()).toContain(โ€œThis is AngularJS Testingโ€) โ€“ Esto se utiliza para indicar a la funciรณn expect que debe encontrar el elemento (en nuestro caso la etiqueta h1) que contiene el texto innerHTML โ€œThis is AngularJS Testingโ€.
describe('Unit testing directives', function() {
  var $compile,
      $rootScope;
  beforeEach(module('sampleApp'));

  beforeEach(inject(function(_$compile_, _$rootScope_){
    $compile = _$compile_;
    $rootScope = _$rootScope_;
  }));

  it('Check the directive', function() {
    // Compile a piece of HTML containing the directive
    var element = $compile("<guru99></guru99>")($rootScope);
    $rootScope.$digest();
    expect(element.html()).toContain("This is AngularJS Testing");
  });
});

La prueba anterior se ejecutarรก en el navegador karma y darรก el mismo resultado que se mostrรณ en el tema anterior.

Pruebas de extremo a extremo de aplicaciones AngularJS

El marco de pruebas de karma junto con un marco llamado ProtracTor tiene la funcionalidad de probar una aplicaciรณn web de principio a fin.

Por lo tanto, no se trata solo de probar directivas y controladores, sino tambiรฉn de cualquier otra cosa que pueda aparecer en una pรกgina HTML.

Veamos un ejemplo de cรณmo podemos lograrlo.

En nuestro ejemplo a continuaciรณn, tendremos una aplicaciรณn AngularJS que crea una tabla de datos usando la directiva ng-repeat.

  1. Primero, creamos una variable llamada "tutorial" y le asignamos algunos pares clave-valor en un solo paso. Cada par clave-valor se utilizarรก como datos al mostrar la tabla. Luego, la variable del tutorial se asigna al objeto de alcance para que se pueda acceder a รฉl desde nuestra vista.
  2. Para cada fila de datos de la tabla, utilizamos la directiva ng-repeat. Esta directiva revisa cada par clave-valor en el objeto de alcance del tutorial utilizando la variable ptutor.
  3. Finalmente, estamos usando el etiqueta junto con los pares clave-valor (ptutor.Name y ptutor.Description) para mostrar los datos de la tabla.
<table>
  <tr ng-repeat="ptutor in tutorial">
    <td>{{ ptutor.Name }}</td>
    <td>{{ ptutor.Description }}</td>
  </tr>
</table>
</div>
<script type="text/javascript">
var app = angular.module('DemoApp', []);
app.controller('DemoController', function($scope) {
  $scope.tutorial = [
    {Name: "Controllers", Description: "Controllers in action"},
    {Name: "Models", Description: "Models and binding data"},
    {Name: "Directives", Description: "Flexibility of Directives"}
  ];
});

Una vez que el cรณdigo anterior se ejecute correctamente, el siguiente paso serรญa crear un caso de prueba para garantizar que el cรณdigo se haya escrito y ejecutado correctamente. El cรณdigo para nuestra prueba serรก el que se muestra a continuaciรณn.

En realidad, nuestra prueba probarรก la directiva ng-repeat y garantizarรก que contenga 3 filas de datos como deberรญa en el ejemplo anterior.

Primero debemos asegurarnos de que se cumpla el siguiente requisito previo

Instala el protracLibrerรญa Tor a travรฉs de npm. Esto se puede hacer ejecutando la siguiente lรญnea en la lรญnea de comandos.

npm install -g protractor

El cรณdigo para nuestra prueba serรก el que se muestra a continuaciรณn.

El cรณdigo estarรก en un archivo independiente llamado CompleteTest.js, que se colocarรก en la carpeta de pruebas. El cรณdigo que aparece a continuaciรณn solo realiza las siguientes tareas clave:

  1. La funciรณn del navegador la proporciona el protracLa biblioteca tor asume que nuestra aplicaciรณn AngularJS (con el cรณdigo mostrado arriba) se estรก ejecutando en nuestro sitio. URL โ€“ http://localhost:8080/Guru99 /
  2. var list = element.all(by.repeater('ptutor in tutorial')); -Esta lรญnea de cรณdigo en realidad obtiene la directiva ng-repeat que se rellena con el cรณdigo 'ptutor in tutorial'. El elemento y by.repeater son palabras clave especiales proporcionadas por el protracBiblioteca Tor que nos permite obtener detalles de la directiva ng-repeat.
  3. esperar(lista.count()).toEqual(3); โ€“ Por รบltimo, estamos usando la funciรณn expect para ver que, de hecho, estamos completando 3 elementos en nuestra tabla como resultado de la directiva ng-repeat.
describe('Unit testing end to end', function() {
  beforeEach(function() {
    browser.get('http://localhost:8080/Guru99/');
  });

  it('Check the ng directive', function() {
    var list = element.all(by.repeater('ptutor in tutorial'));
    expect(list.count()).toEqual(3);
  });
});

La prueba anterior se ejecutarรก en el navegador karma y darรก el mismo resultado que se mostrรณ en el tema anterior.

Karma contra Jazmรญn contra Protractor: Diferencias clave

Las tres herramientas que se utilizan en esta pรกgina suelen confundirse porque aparecen en la misma lรญnea de comandos. Cada una ocupa una capa diferente de la pila de pruebas, como se muestra en la tabla a continuaciรณn.

Parรกmetro Karma Jazmรญn Protractor
Categorรญa corredor de pruebas Marco de especificaciones Marco de automatizaciรณn de extremo a extremo
Trabajo principal Inicia navegadores e informa los resultados. Proporciona descripciรณn, y espera Ejecuta una aplicaciรณn en vivo en un navegador real.
Nivel de prueba Unidad y de contacto Unidad e integraciรณn De extremo a extremo
Necesita un servidor en funcionamiento. No No Sรญ:
Archivo de configuraciรณn karma.conf.js Ninguno, corre dentro de un corredor PROtractor.conf.js
estado actual Obsoleto, solo para mantenimiento Mantenido activamente Se jubilรณ en agosto de 2023.

En resumen, Jasmine escribe la prueba, Karma la ejecuta y ProtracTor extiende la misma sintaxis de Jasmine a una pรกgina completamente renderizada.

Mejores prรกcticas para pruebas unitarias de AngularJS

Un pequeรฑo conjunto de hรกbitos permite que una suite de AngularJS sea rรกpida y confiable a medida que la aplicaciรณn crece.

  1. Pruebe una unidad a la vez. Cargue รบnicamente el mรณdulo que se estรก probando dentro de beforeEach y simule a cada colaborador para que un fallo apunte a un รบnico archivo.
  2. Nunca llames a un servidor backend real. Utilice el servicio $httpBackend de angular-mocks para devolver respuestas predefinidas. De esta forma, las pruebas se ejecutan sin conexiรณn y producen resultados idรฉnticos en cualquier mรกquina.
  3. Mantenga los nombres de las especificaciones descriptivos del comportamiento. Un nombre como "devuelve 5 cuando el controlador se inicializa" se lee mejor en un informe que "test1".
  4. Siempre enjuague el ciclo digestivo. Llama a $rootScope.$digest() despuรฉs de cambiar los datos del รกmbito; de lo contrario, los enlaces y los observadores nunca se actualizarรกn y las aserciones fallarรกn por el motivo incorrecto.
  5. Mida la cobertura, pero evalรบela con cuidado. Aรฑade karma-coverage para ver las ramas sin probar. Una cobertura alta con aserciones dรฉbiles aรบn oculta defectos.
  6. Ejecuta el conjunto de pruebas en integraciรณn continua. Utiliza un lanzador de Chrome sin interfaz grรกfica para que se ejecuten las mismas especificaciones en cada confirmaciรณn de cambios, en lugar de solo en la mรกquina del desarrollador.

La aplicaciรณn de estas reglas convierte los ejemplos anteriores de demostraciones aisladas en una red de seguridad de regresiรณn para una base de cรณdigo AngularJS heredada. Para obtener una visiรณn mรกs amplia, consulte la Tutorial de AngularJS .

Preguntas Frecuentes

El mรณdulo que contiene ese proveedor no se cargรณ. Agrรฉguelo dentro de beforeEach(module('yourModule')) y confirme que angular-mocks.js aparece en karma.conf.js despuรฉs de angular.js; de lo contrario, el inyector no podrรก resolver la dependencia.

Instala karma-chrome-launcher y configura la opciรณn browsers a ChromeHeadless en karma.conf.js. De esta forma, el conjunto de herramientas se ejecutarรก dentro de pipelines de integraciรณn continua y contenedores donde no haya un servidor de visualizaciรณn disponible.

Sรญ. Los asistentes de codificaciรณn de IA leen un controlador y elaboran especificaciones de Jasmine con รกmbitos y comparadores simulados. RevExamine la salida con atenciรณn, ya que las aserciones generadas a menudo reiteran la implementaciรณn en lugar de verificar el comportamiento previsto.

Sรญ. Las herramientas de IA traducen las especificaciones de Jasmine a la sintaxis de Jest o Vitest e identifican las llamadas a angular-mocks que no tienen un equivalente directo. La verificaciรณn manual sigue siendo esencial, ya que los patrones de inyecciรณn de dependencias rara vez se convierten correctamente.

La mayorรญa de los equipos buscan una cobertura de sentencias del 70 al 80 por ciento en controladores y servicios. Intentar alcanzar una cifra mayor generalmente implica probar plantillas y bibliotecas de terceros, lo que aumenta los costos de mantenimiento sin detectar defectos reales.

Resumir este post con: