web-dev-qa-db-fra.com

A quoi servent les fichiers "spec.ts" générés par Angular CLi?

Je suis nouveau sur Angular 2 (et Angular en général ...) et je le trouve très attrayant. J'utilise Angular CLi pour générer et servir des projets. Cela semble bien fonctionner - bien que pour mes petits projets d'apprentissage, cela produise plus que ce dont j'ai besoin - mais c'était à prévoir.

J'ai remarqué qu'il génère spec.ts pour chaque élément Angular d'un projet (composant, service, tuyau, etc.). J'ai effectué des recherches mais n'ai pas trouvé d'explication à propos de ces fichiers.

S'agit-il de fichiers de construction qui sont normalement masqués lors de l'utilisation de tsc? Je me demandais parce que je voulais changer le nom d'un Component mal nommé et que j'avais créé et découvert que le nom était également référencé dans ces fichiers 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 {
}
157
No Grabbing

Les fichiers de spécifications sont des tests unitaires pour vos fichiers source. La convention pour les applications Angular est d'avoir un fichier .spec.ts pour chaque fichier .ts. Ils sont exécutés à l'aide de la structure de test javascript Jasmine via le programme d'exécution de test Karma ( https://karma-runner.github.io/ ) lorsque vous utilisez la commande ng test.

Vous pouvez l'utiliser pour d'autres lectures:

https://angular.io/guide/testing

200
awiseman

si vous générez un nouveau projet angular avec "ng new", vous pouvez ignorer la génération de fichiers spec.ts. Pour cela, vous devez appliquer l'option --skip-tests.

ng new ng-app-name --skip-tests

12
trueboroda

Les fichiers .spec.ts sont destinés aux tests unitaires de composants individuels. Vous pouvez exécuter le lanceur de tâches Karma via ng test. Afin de voir la couverture de code des cas de test unitaires pour des composants particuliers, exécutez ng test --code-coverage

3
Pritam Sinha