¿Cuáles son los "spec.ts " archivos generados por Angular CLi for?


Soy nuevo en Angular 2 (y Angular en general...) y lo encuentro muy atractivo. Estoy usando Angular CLi para generar y servir proyectos. Parece funcionar bien, aunque para mis pequeños proyectos de aprendizaje, produce más de lo que necesito, pero eso es de esperar.

He notado que genera spec.ts para cada elemento Angular en un proyecto (Componente, Servicio, Tubería, etc.). He buscado por ahí, pero no he encontrado una explicación de lo que estos archivos son para.

Son estos archivos de compilación que normalmente se ocultan cuando se usa tsc? Me pregunté porque quería cambiar el nombre de un mal nombre Component que había creado y descubrí que el nombre también se hace referencia en estos archivos spec.ts.


import {
  beforeEach,
  beforeEachProviders,
  describe,
  expect,
  it,
  inject,
} from '@angular/core/testing';
import { ComponentFixture, TestComponentBuilder } from '@angular/compiler/testing';
import { Component } from '@angular/core';
import { By } from '@angular/platform-browser';
import { PovLevelComponent } from './pov-level.component';

describe('Component: PovLevel', () => {
  let builder: TestComponentBuilder;

  beforeEachProviders(() => [PovLevelComponent]);
  beforeEach(inject([TestComponentBuilder], function (tcb: TestComponentBuilder) {
    builder = tcb;
  }));

  it('should inject the component', inject([PovLevelComponent],
      (component: PovLevelComponent) => {
    expect(component).toBeTruthy();
  }));

  it('should create the component', inject([], () => {
    return builder.createAsync(PovLevelComponentTestController)
      .then((fixture: ComponentFixture<any>) => {
        let query = fixture.debugElement.query(By.directive(PovLevelComponent));
        expect(query).toBeTruthy();
        expect(query.componentInstance).toBeTruthy();
      });
  }));
});

@Component({
  selector: 'test',
  template: `
    <app-pov-level></app-pov-level>
  `,
  directives: [PovLevelComponent]
})
class PovLevelComponentTestController {
}
 107
Author: guiomie, 2016-05-28

3 answers

Los archivos spec son pruebas unitarias para sus archivos fuente. La convención para aplicaciones Angulares es tener un .spec.archivo ts para cada uno .archivo ts. Se ejecutan utilizando el framework de prueba javascript Jasmine a través del Karma task runner cuando se utiliza el comando ng test.

Puedes usar esto para algunas lecturas adicionales:

Https://angular.io/guide/testing

 139
Author: awiseman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-18 09:58:28

Si genera un nuevo proyecto angular usando "ng new", puede omitir una generación de especificaciones.archivos ts. Para esto debe aplicar la opción skip skip-tests.

Ng nuevo ng-app-name skip skip-tests

 4
Author: trueboroda,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-14 20:23:56

El.spec.los archivos ts son para pruebas unitarias de componentes individuales. Puedes ejecutar Karma task runner a través de ng test. Para ver la cobertura de código de los casos de prueba unitaria para componentes particulares, ejecute ng test --code-coverage

 0
Author: Pritam Sinha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-19 17:55:11