Угловой CLI создает файлы.spec для уже существующих компонентов

В .angular-cli.json чтобы отключить автоматическое создание файлов *.spec например, для компонентов, см. *.spec json.

Это действительно приятная функция, потому что лично (это только мое мнение) тестирование компонентов может быть не тем, что действительно стоит в быстрорастущем проекте.

Однако иногда я хотел бы иметь возможность генерировать/воссоздавать соответствующий файл *.spec для уже существующего компонента/службы/канала/вообще.

Возможно ли это с помощью вызова командной строки?

Создал запрос функции, посмотрим, как это происходит...

Ответ 1

В настоящее время Угловая CLI не обеспечивает эту функциональность, и неясно, как и когда можно будет управлять ею по-официальному.

Однако здесь представлена библиотека "ngx-spec", которая генерирует спецификацию, основанную на предварительных настройках спецификации Angular CLI.

Ответ 2

выберите каталог, в котором вы хотите сгенерировать спецификацию, и тогда он сгенерирует все спецификации Angular.

генерировать файл только в том случае, если спецификационный файл не существует, а компонент /directive/guard/pipe/service следует за именем генерирования файла angular-cli.

npm install -g angular-spec-generator

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

Ответ 3

Для этого есть 2 решения:

  • 1: Создайте копию @angular/cli, добавьте свой собственный код (или расширьте его) к существующей ng new команде (https://github.com/angular/angular-cli/blob/master/packages/%40angular/cli/commands/new.ts) и интегрироваться в ваш глобальный установленный @angular/cli. Это, вероятно, непрактично и не стоит вашего времени.
  • 2: Сделайте запрос на тягу к команде @angular/cli чтобы интегрировать вашу идею, и если код работает, и идея кажется достаточно хорошей, они могут добавить ее.

Ответ 4

SimonTest - это расширение VS Code, которое генерирует тесты для существующих файлов. Я настоятельно рекомендую это (я никак не связан с ними).

Единственный улов заключается в том, что он поставляется с 30-дневной бесплатной пробной версией, а затем требует платной лицензии.

Ответ 5

Строительные леса для существующих файлов .ts могут быть созданы с помощью https://github.com/smnbbrv/ngx-spec

Чтобы установить в угловом проекте:

npm i -D [email protected]^2.0.0

(-D - сокращение от --save -D ev)

пример использования (для услуги):

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

или

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

Для службы это не настраивает тест, который будет создан посредством инъекции. Адаптируйте так, чтобы тест выглядел примерно так:

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

Это также означало возможность создания тестов с использованием подстановочного знака, например,

ng g ngx-specs '**/*

Это не сработало для меня - см. проблему GitHub:

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


Примечание. В качестве стратегии реализации тестовой разработки -D я нашел, что проще всего найти и удалить все существующие файлы *.spec.ts, которые были автоматически созданы в проекте Angular как часть первоначального создания артефакта (путем поиска в проводнике Windows), то в качестве отправной точки я создал единый тест для основной службы поставщика данных Angular, используя ngx-spec