web-dev-qa-db-de.com

Angular CLI erstellt .spec-Dateien für bereits vorhandene Komponenten

Es gibt eine Option in .angular-cli.json, um das automatische Erstellen von *.spec-Dateien zu deaktivieren, z. für Komponenten siehe json schema .

Dies ist eine wirklich schöne Funktion, da das Testen der Komponenten für mich persönlich (das ist nur meiner Meinung nach) in einem schnell wachsenden Projekt nicht wirklich die Mühe wert ist. 

Manchmal möchte ich jedoch die Möglichkeit haben, die entsprechende *.spec-Datei für eine bereits vorhandene Komponente/service/pipe/zu generieren bzw. neu zu erstellen.

Ist das mit einem Kommandozeilenaufruf möglich?

Erstellt eine Feature-Anfrage , mal sehen, wie es geht ...

29
smnbbrv

Momentan bietet Angular CLI diese Funktionalität nicht an und es ist nicht klar, wie und wann es möglich ist, diese auf offizielle Weise zu verwalten.

hier ist jedoch eine Bibliothek "ngx-spec", die die Spezifikation basierend auf Angular-CLI-Voreinstellungen generiert.

14
smnbbrv

auswahlverzeichnis, das Sie generieren möchten, und dann werden alle Angular-Spezifikationen generiert.

generiere nur eine Datei, wenn die Spezifikationsdatei nicht beendet wird, und die Komponente/Anweisung/guard/pipe/service folgt dem Namen der Datei „angle-cli“.

npm install -g angular-spec-generator

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

SimonTest ist eine Erweiterung von VS Code, die Tests für vorhandene Dateien generiert. Ich kann es nur empfehlen (ich bin in keiner Weise mit ihnen verbunden).

Der einzige Haken ist, dass es eine kostenlose 30-Tage-Testversion gibt und danach eine kostenpflichtige Lizenz benötigt.

1
ForOhFor

Dafür gibt es 2 Lösungen:

  • 1: Erstellen Sie eine Kopie von @angular/cli, fügen Sie dem vorhandenen ng new-Befehl Ihren eigenen Code hinzu (oder erweitern Sie ihn) ( https://github.com/angular/angular-cli/blob/master/packages/% 40angular/cli/command/new.ts ) und integrieren Sie Ihre global installierten @angular/cli. Dies ist wahrscheinlich unpraktisch und Ihre Zeit nicht wert.
  • 2: Stellen Sie beim @angular/cli-Team eine Pull-Anfrage, um Ihre Idee zu integrieren. Wenn der Code funktioniert und die Idee gut genug erscheint, wird sie möglicherweise hinzugefügt.
0
Alex Beugnet

Das Gerüst für vorhandene .ts-Dateien kann mit https://github.com/smnbbrv/ngx-spec erstellt werden

So installieren Sie in einem Angular - Projekt:

npm i -D [email protected]^2.0.0

(-D ist die Abkürzung für --save-dev)

beispielnutzung (für einen Dienst):

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

oder

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

Damit wird für einen Service kein Test eingerichtet, der per Injection erstellt werden soll. Passen Sie den Test so an, dass er ungefähr so ​​aussieht:

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();
  }));
});

Es soll auch möglich sein, Tests unter Verwendung eines Platzhalters zu generieren, z.

ng g ngx-specs '**/*

Das hat bei mir nicht funktioniert - siehe die GitHub-Ausgabe:

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


Hinweis - Als Strategie zur Implementierung einer testgetriebenen Entwicklung fand ich es am einfachsten, nach allen vorhandenen *.spec.ts Dateien zu suchen und diese zu entfernen Wurde im Rahmen der ersten Artefakterstellung (durch Suchen im Windows-Explorer) automatisch im Projekt Angular erstellt, erstellte ich als Ausgangspunkt einen einzelnen Test für den Hauptdatenprovider Angular mit ngx-spec

0
Chris Halcrow