83 votes

Angular CLI crée des fichiers .spec pour des composants déjà existants

Il existe une option dans .angular-cli.json pour désactiver la création automatique de *.spec par exemple pour les composants, voir schéma json .

C'est une fonctionnalité très appréciable car, personnellement (ce n'est que mon opinion), tester les composants n'est peut-être pas la chose qui en vaut vraiment la peine dans un projet à croissance rapide.

Cependant, j'aimerais parfois disposer d'une option permettant de générer/recréer le fichier correspondant. *.spec pour un composant / service / tuyau / quoi que ce soit déjà existant.

Est-ce possible en utilisant un appel de ligne de commande ?

Création d'un demande de fonctionnalité On verra comment ça se passe...

3 votes

Les tests sont importants dans un projet à croissance rapide ! Lorsqu'il s'agit d'un grand projet, vous souffrirez de problèmes d'effets secondaires et le projet se développera lentement. QED

0 votes

Vous avez raison. Il se peut que je me sois mal exprimé : lorsque les exigences ne sont pas encore claires et que le projet en est au stade de la validation du concept, les tests posent un réel problème. C'est pourquoi il est bon de pouvoir les générer un peu plus tard :)

50voto

simon Points 1621

Actuellement, Angular CLI ne fournit pas cette fonctionnalité et il n'est pas clair comment et quand il sera possible de la gérer de manière officielle.

Cependant, voici une bibliothèque "ngx-spec" qui génère la spécification basée sur les présélections de la CLI d'Angular. .

23voto

vinay garg Points 41

Choisissez un répertoire où vous voulez générer les spécifications, et ensuite il va générer toutes les spécifications Angular.

ne génère le fichier que lorsque le fichier spec n'existe pas, et que le composant / directive / garde / pipe / service suit le nom du fichier angular-cli à générer.

npm install -g angular-spec-generator

angular-spec-generator 'C:\Users\Alan\Desktop\test'

11voto

Chris Halcrow Points 907

L'échafaudage pour les fichiers .ts existants peut être créé en utilisant la fonction https://github.com/smnbbrv/ngx-spec

Pour l'installer dans un projet Angular :

npm i -D ngx-spec@^2.0.0

(-D est l'abréviation de --save-dev)

exemple d'utilisation (pour un service) :

ng g ngx-spec:spec path/my.service

ou

ng g ngx-spec:spec path/my.service.ts

Pour un service, cela ne permet pas de mettre en place un test à créer par injection. Adaptez pour que le test ressemble à quelque chose comme ceci :

import { TestBed, inject } from '@angular/core/testing';

import { DataService } from './data.service';
import { AuthService } from './auth.service';
import { HttpClient, HttpHandler } from '@angular/common/http';

describe('DataService', () => {
  beforeEach(() => {
    TestBed.configureTestingModule({
      providers: [DataService, AuthService, HttpClient, HttpHandler
      ]
    });
  });

  it('should be created', inject([DataService, AuthService], (service: DataService) => {
    expect(service).toBeTruthy();
  }));
});

Il doit également être possible de générer des tests en utilisant un caractère générique, par exemple.

ng g ngx-specs '**/*

Cela n'a pas fonctionné pour moi - voir le problème GitHub :

https://github.com/smnbbrv/ngx-spec/issues/10


Note - En tant que stratégie pour mettre en œuvre le développement piloté par les tests, j'ai trouvé que le plus simple était de rechercher et de supprimer toutes les données existantes de l *.spec.ts qui avaient été automatiquement créés dans le projet Angular dans le cadre de la création initiale de l'artefact (en effectuant une recherche dans l'explorateur Windows), puis, comme point de départ, j'ai créé un seul test pour le principal service de fournisseur de données Angular, en utilisant le fichier ngx-spec

5voto

ForOhFor Points 394

SimonTest est une extension de VS Code qui génère des tests pour les fichiers existants. Je le recommande vivement (je ne suis pas affilié à eux de quelque manière que ce soit).

Le seul hic est qu'il est livré avec une version d'essai gratuite de 30 jours et qu'il nécessite ensuite une licence payante.

0 votes

Oui, il y a un piège. Mais SimonTest n'est pas si bon. Je l'ai utilisé, et ce n'est pas si satisfaisant.

-2voto

Alex Beugnet Points 1974

Il existe deux solutions pour cela :

  • 1 : Créez une copie de @angular/cli ajoutez votre propre code (ou étendez-le) à la base de données existante. ng new ( https://github.com/angular/angular-cli/blob/master/packages/%40angular/cli/commands/new.ts ) et l'intégrer à votre installation globale @angular/cli . Cela n'est probablement pas pratique et ne vaut pas la peine de perdre votre temps.
  • 2 : Faites une demande de retrait dans le fichier @angular/cli pour intégrer votre idée, et si le code fonctionne et que l'idée semble suffisamment bonne, ils pourraient l'ajouter.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X