Ответ 1
В настоящее время Угловая CLI не обеспечивает эту функциональность, и неясно, как и когда можно будет управлять ею по-официальному.
В .angular-cli.json
чтобы отключить автоматическое создание файлов *.spec
например, для компонентов, см. *.spec
json.
Это действительно приятная функция, потому что лично (это только мое мнение) тестирование компонентов может быть не тем, что действительно стоит в быстрорастущем проекте.
Однако иногда я хотел бы иметь возможность генерировать/воссоздавать соответствующий файл *.spec
для уже существующего компонента/службы/канала/вообще.
Возможно ли это с помощью вызова командной строки?
Создал запрос функции, посмотрим, как это происходит...
В настоящее время Угловая CLI не обеспечивает эту функциональность, и неясно, как и когда можно будет управлять ею по-официальному.
выберите каталог, в котором вы хотите сгенерировать спецификацию, и тогда он сгенерирует все спецификации Angular.
генерировать файл только в том случае, если спецификационный файл не существует, а компонент /directive/guard/pipe/service следует за именем генерирования файла angular-cli.
npm install -g angular-spec-generator
angular-spec-generator 'C:\Users\Alan\Desktop\test'
Для этого есть 2 решения:
@angular/cli
, добавьте свой собственный код (или расширьте его) к существующей ng new
команде (https://github.com/angular/angular-cli/blob/master/packages/%40angular/cli/commands/new.ts) и интегрироваться в ваш глобальный установленный @angular/cli
. Это, вероятно, непрактично и не стоит вашего времени.@angular/cli
чтобы интегрировать вашу идею, и если код работает, и идея кажется достаточно хорошей, они могут добавить ее.SimonTest - это расширение VS Code, которое генерирует тесты для существующих файлов. Я настоятельно рекомендую это (я никак не связан с ними).
Единственный улов заключается в том, что он поставляется с 30-дневной бесплатной пробной версией, а затем требует платной лицензии.
Строительные леса для существующих файлов .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
Для тех, кто все еще ищет решение этой проблемы: https://www.npmjs.com/package/angular-spec-generator
Это, казалось, работало довольно хорошо для меня.