.angular-cli.json
には、*.spec
ファイルの自動作成を無効にするオプションがあります。コンポーネントについては、 json schema を参照してください。
これは本当に素晴らしい機能です。なぜなら、個人的に(これは私の意見です)コンポーネントをテストすることは、急速に成長しているプロジェクトでは本当に価値があるものではないかもしれないからです。
ただし、既存のコンポーネント/サービス/パイプ/その他に対応する*.spec
ファイルを生成/再作成するオプションが必要な場合があります。
それはいくつかのコマンドラインコールを使用して可能ですか?
機能要求 を作成しました。それがどうなるか見てみましょう...
現在、Angular CLIはこの機能を提供しておらず、公式な方法でいつどのように管理できるかは明確ではありません。
ただし、 Angular CLI仕様プリセット に基づいて仕様を生成するライブラリ「ngx-spec」があります。
スペックを生成するディレクトリを選択すると、すべてのAngular=スペックが生成されます。
specファイルが存在しない場合にのみファイルを生成し、コンポーネント/ディレクティブ/ガード/パイプ/サービスは、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日間の無料トライアルが付属していることです。その後、有料ライセンスが必要です。
https://github.com/smnbbrv/ngx-spec を使用して、既存の.tsファイルの足場を作成できます。
Angularプロジェクトにインストールするには:
npm i -D ngx-spec@^2.0.0
(-Dは--save-devの省略形です)
使用例(サービスの場合):
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/1
注-テスト駆動開発を実装する戦略として、自動的に存在するすべての既存の*.spec.ts
ファイルを検索して削除するのが最も簡単であることがわかりました最初のアーティファクト作成の一部としてAngularプロジェクトで作成され(Windowsエクスプローラーで検索)、開始点として、メインAngularデータプロバイダーサービスの単一のテストを作成しました。 ngx-spec
を使用