Skip to content

Commit 44cfc20

Browse files
committed
fix: sync testing documentation with English versions
1 parent 8d80411 commit 44cfc20

2 files changed

Lines changed: 5 additions & 174 deletions

File tree

adev-ja/src/content/guide/testing/components-scenarios.md

Lines changed: 4 additions & 173 deletions
Original file line numberDiff line numberDiff line change
@@ -531,9 +531,8 @@ IMPORTANT: `click()`ヘルパー関数は、Angularのテストユーティリ
531531

532532
<docs-code header="app/dashboard/dashboard-hero.component.spec.ts (test host setup)" path="adev/src/content/examples/testing/src/app/dashboard/dashboard-hero.component.spec.ts" visibleRegion="test-host-setup"/>
533533

534-
このテストモジュール設定は、3つの重要な違いを示しています
534+
このテストモジュール設定は、2つの重要な違いを示しています
535535

536-
* `DashboardHeroComponent``TestHostComponent`の両方を*インポート*します
537536
* `DashboardHeroComponent`ではなく`TestHostComponent`*作成*します
538537
* `TestHostComponent`は、バインディングで`DashboardHeroComponent.hero`を設定します
539538

@@ -588,23 +587,6 @@ Here are the services injected into `HeroDetailComponent`:
588587

589588
テストでは、異なるルートにナビゲートすることで、`HeroDetailComponent`が異なる`id`パラメーター値にどのように応答するかを調べることができます。
590589

591-
### `RouterTestingHarness`によるテスト
592-
593-
次に、観察された`id`が既存のヒーローを参照している場合に、コンポーネントの動作を示すテストを示します。
594-
595-
<docs-code header="app/hero/hero-detail.component.spec.ts (existing id)" path="adev/src/content/examples/testing/src/app/hero/hero-detail.component.spec.ts" visibleRegion="route-good-id"/>
596-
597-
HELPFUL: 後のセクションでは、`createComponent()`メソッドと`page`オブジェクトについて説明します。
598-
今のところ、直感的に理解してください。
599-
600-
`id`が見つからない場合、コンポーネントは`HeroListComponent`にリダイレクトする必要があります。
601-
602-
テストスイートの設定では、同じルーターハーネスが提供されました[上記を参照](#routing-component)
603-
604-
このテストは、コンポーネントが`HeroListComponent`へのナビゲーションを試みると予想しています。
605-
606-
<docs-code header="app/hero/hero-detail.component.spec.ts (bad id)" path="adev/src/content/examples/testing/src/app/hero/hero-detail.component.spec.ts" visibleRegion="route-bad-id"/>
607-
608590
## ネストされたコンポーネントテスト
609591

610592
コンポーネントテンプレートには、多くの場合、ネストされたコンポーネントが含まれています。そのテンプレートには、さらに多くのコンポーネントが含まれている場合があります。
@@ -637,17 +619,15 @@ HELPFUL: 後のセクションでは、`createComponent()`メソッドと`page`
637619
スタブセレクターは、対応する実際のコンポーネントのセレクターと一致します。
638620
しかし、それらのテンプレートとクラスは空です。
639621

640-
次に、`TestBed`設定内で、実際にする必要があるコンポーネント、ディレクティブ、パイプの横に宣言します
622+
次に、`TestBed.overrideComponent`を使用してコンポーネントの`imports`をオーバーライドして宣言します
641623

642624
<docs-code header="app/app.component.spec.ts (TestBed stubs)" path="adev/src/content/examples/testing/src/app/app.component.spec.ts" visibleRegion="testbed-stubs"/>
643625

644-
`AppComponent`はテスト対象なので、当然、実際のバージョンを宣言します。
645-
646-
残りはスタブです。
626+
HELPFUL: この例の`set`キーはコンポーネントの既存のimportsをすべて置き換えます。スタブだけでなく、すべての依存関係をimportするようにしてください。または、`remove`/`add`キーを使用してimportsを選択的に削除および追加できます。
647627

648628
### `NO_ERRORS_SCHEMA`
649629

650-
2番目の方法では、`TestBed.schemas`メタデータに`NO_ERRORS_SCHEMA`を追加します。
630+
2番目の方法では、コンポーネントのメタデータオーバーライドに`NO_ERRORS_SCHEMA`を追加します。
651631

652632
<docs-code header="app/app.component.spec.ts (NO_ERRORS_SCHEMA)" path="adev/src/content/examples/testing/src/app/app.component.spec.ts" visibleRegion="no-errors-schema"/>
653633

@@ -732,155 +712,6 @@ Angularコンパイラーは、`<app-banner>`要素に対して`BannerStubCompon
732712

733713
<docs-code header="app/hero/hero-detail.component.spec.ts (selected tests)" path="adev/src/content/examples/testing/src/app/hero/hero-detail.component.spec.ts" visibleRegion="selected-tests"/>
734714

735-
## `compileComponents()`の呼び出し
736-
737-
HELPFUL: CLI`ng test`コマンドでのみテストを実行している場合は、このセクションを無視してください。なぜなら、CLIはテストを実行する前にアプリケーションをコンパイルするからです。
738-
739-
**CLI以外の環境**でテストを実行する場合、テストは次のようなメッセージで失敗する可能性があります。
740-
741-
<docs-code hideCopy language="shell">
742-
743-
Error: This test module uses the component BannerComponent
744-
which is using a "templateUrl" or "styleUrls", but they were never compiled.
745-
Please call "TestBed.compileComponents" before your test.
746-
747-
</docs-code>
748-
749-
問題の根本は、テストに関与するコンポーネントの少なくとも1つが、`BannerComponent`の次のバージョンで行われているように、外部テンプレートまたはCSSファイルを指定していることです。
750-
751-
<docs-code header="app/banner/banner-external.component.ts (external template & css)" path="adev/src/content/examples/testing/src/app/banner/banner-external.component.ts"/>
752-
753-
テストは、`TestBed`がコンポーネントの作成を試みたときに失敗します。
754-
755-
<docs-code avoid header="app/banner/banner-external.component.spec.ts (setup that fails)" path="adev/src/content/examples/testing/src/app/banner/banner-external.component.spec.ts" visibleRegion="setup-may-fail"/>
756-
757-
アプリケーションはコンパイルされていないことを思い出してください。
758-
そのため、`createComponent()`を呼び出すと、`TestBed`は暗黙的にコンパイルします。
759-
760-
これは、ソースコードがメモリ内にある場合は問題ありません。
761-
しかし、`BannerComponent`は外部ファイルが必要であり、コンパイラーはファイルシステムからそれらを読み取る必要があります。これは本質的に*非同期*操作です。
762-
763-
`TestBed`が続行することを許可すると、テストが実行され、コンパイラーが完了する前に、不可解な理由で失敗します。
764-
765-
予防的なエラーメッセージは、`compileComponents()`で明示的にコンパイルするように指示しています。
766-
767-
### `compileComponents()`は非同期です
768-
769-
`compileComponents()`は、非同期テスト関数内で呼び出す必要があります。
770-
771-
CRITICAL: テスト関数を非同期にするのを怠ると(たとえば、[waitForAsync()](#waitForAsync)の使用を忘れると)、次のようなエラーメッセージが表示されます。
772-
773-
<docs-code hideCopy language="shell">
774-
775-
Error: ViewDestroyedError: Attempt to use a destroyed view
776-
777-
</docs-code>
778-
779-
一般的なアプローチは、セットアップロジックを2つの別の`beforeEach()`関数に分割することです。
780-
781-
| 関数 | 詳細 |
782-
| :----------------------- | :---------------------------- |
783-
| 非同期`beforeEach()` | コンポーネントをコンパイルする |
784-
| 同期`beforeEach()` | 残りのセットアップを実行する |
785-
786-
### 非同期`beforeEach`
787-
788-
最初の非同期`beforeEach`は、次のように記述します。
789-
790-
<docs-code header="app/banner/banner-external.component.spec.ts (async beforeEach)" path="adev/src/content/examples/testing/src/app/banner/banner-external.component.spec.ts" visibleRegion="async-before-each"/>
791-
792-
`TestBed.configureTestingModule()`メソッドは、`TestBed`クラスを返し、`compileComponents()`などの他の`TestBed`の静的メソッドへの呼び出しをチェーンすることができます。
793-
794-
この例では、`BannerComponent`はコンパイルする必要がある唯一のコンポーネントです。
795-
他の例では、複数のコンポーネントでテストモジュールを設定し、さらに多くのコンポーネントを保持するアプリケーションモジュールをインポートする場合があります。
796-
それらのいずれかが外部ファイルが必要になる可能性があります。
797-
798-
`TestBed.compileComponents`メソッドは、テストモジュールで設定されたすべてのコンポーネントを非同期的にコンパイルします。
799-
800-
IMPORTANT: `compileComponents()`を呼び出した後、`TestBed`を再設定しないでください。
801-
802-
`compileComponents()`を呼び出すと、現在の`TestBed`インスタンスがさらに設定されなくなります。
803-
`configureTestingModule()``override...`メソッドなど、`TestBed`の構成メソッドをさらに呼び出すことはできません。
804-
`TestBed`は、試行するとエラーをスローします。
805-
806-
`compileComponents()`を、`TestBed.createComponent()`を呼び出す前の最後のステップにしてください。
807-
808-
### 同期`beforeEach`
809-
810-
2番目の、同期`beforeEach()`には、残りのセットアップ手順が含まれます。これには、コンポーネントの作成と、検査する要素のクエリが含まれます。
811-
812-
<docs-code header="app/banner/banner-external.component.spec.ts (synchronous beforeEach)" path="adev/src/content/examples/testing/src/app/banner/banner-external.component.spec.ts" visibleRegion="sync-before-each"/>
813-
814-
テストランナーは、最初の非同期`beforeEach`が終了するまで待ってから、2番目を呼び出します。
815-
816-
### 統合された設定
817-
818-
2つの`beforeEach()`関数を、1つの非同期`beforeEach()`に統合できます。
819-
820-
`compileComponents()`メソッドはプロミスを返すため、同期セットアップタスクを*コンパイル後*に実行することができます。そのため、同期コードを`await`キーワードの後に移動します。この時点で、プロミスは解決されています。
821-
822-
<docs-code header="app/banner/banner-external.component.spec.ts (one beforeEach)" path="adev/src/content/examples/testing/src/app/banner/banner-external.component.spec.ts" visibleRegion="one-before-each"/>
823-
824-
### `compileComponents()`は安全です
825-
826-
`compileComponents()`を呼び出しても、必要ない場合でも害はありません。
827-
828-
CLIによって生成されたコンポーネントテストファイルは、`ng test`を実行しているときは不要ですが、`compileComponents()`を呼び出します。
829-
830-
このガイドのテストでは、必要に応じてのみ`compileComponents`を呼び出します。
831-
832-
## モジュールインポートによるセットアップ
833-
834-
以前のコンポーネントテストでは、次のようにテストモジュールをいくつかの`declarations`で設定していました。
835-
836-
<docs-code header="app/dashboard/dashboard-hero.component.spec.ts (configure TestBed)" path="adev/src/content/examples/testing/src/app/dashboard/dashboard-hero.component.spec.ts" visibleRegion="config-testbed"/>
837-
838-
`DashboardComponent`はシンプルです。
839-
助けは必要ありません。
840-
しかし、より複雑なコンポーネントは、多くの場合、他のコンポーネント、ディレクティブ、パイプ、およびプロバイダーに依存しており、これらをテストモジュールにも追加する必要があります。
841-
842-
幸いなことに、`TestBed.configureTestingModule`のパラメーターは、`@NgModule`デコレーターに渡されるメタデータと並行しているため、`providers``imports`も指定できます。
843-
844-
`HeroDetailComponent`は、小さいサイズでシンプルな構造にもかかわらず、多くの助けを必要としています。
845-
デフォルトのテストモジュール`CommonModule`からサポートを受けることに加えて、次のようなものが必要です。
846-
847-
* `FormsModule``NgModel`など、双方向データバインディングを有効にする
848-
* `shared`フォルダの`TitleCasePipe`
849-
* ルーターサービス
850-
* ヒーローのデータアクセスサービス
851-
852-
1つのアプローチは、次の例のように、個々のピースからテストモジュールを設定することです。
853-
854-
<docs-code header="app/hero/hero-detail.component.spec.ts (FormsModule setup)" path="adev/src/content/examples/testing/src/app/hero/hero-detail.component.spec.ts" visibleRegion="setup-forms-module"/>
855-
856-
HELPFUL: `beforeEach()`が非同期であり、`TestBed.compileComponents`を呼び出していることに注意してください。なぜなら、`HeroDetailComponent`は外部テンプレートとcssファイルを持っているからです。
857-
858-
[compileComponentsの呼び出し](#calling-compilecomponents)で説明されているように、これらのテストは、Angularがブラウザでそれらをコンパイルする必要がある、CLI以外の環境で実行することができます。
859-
860-
### 共有モジュールのインポート
861-
862-
多くのアプリケーションコンポーネントが`FormsModule``TitleCasePipe`を必要とするため、開発者は`SharedModule`を作成して、これらと他の頻繁に要求される部分を組み合わせました。
863-
864-
テスト設定では、次の例のように、`SharedModule`も使用できます。
865-
866-
<docs-code header="app/hero/hero-detail.component.spec.ts (SharedModule setup)" path="adev/src/content/examples/testing/src/app/hero/hero-detail.component.spec.ts" visibleRegion="setup-shared-module"/>
867-
868-
これは少しタイトで小さく、インポートステートメントが少なくなります。この例では示されていません。
869-
870-
### 機能モジュールのインポート
871-
872-
`HeroDetailComponent`は、`SharedModule`など、相互依存する部分をさらにまとめた`HeroModule` [機能モジュール](guide/ngmodules/feature-modules)の一部です。
873-
次のような`HeroModule`をインポートするテスト設定を試してみましょう。
874-
875-
<docs-code header="app/hero/hero-detail.component.spec.ts (HeroModule setup)" path="adev/src/content/examples/testing/src/app/hero/hero-detail.component.spec.ts" visibleRegion="setup-hero-module"/>
876-
877-
`providers`*テストダブル*のみが残ります。
878-
`HeroDetailComponent`の宣言でさえなくなっています。
879-
880-
実際、宣言しようとすると、Angularはエラーをスローします。なぜなら、`HeroDetailComponent``HeroModule``TestBed`によって作成された`DynamicTestModule`の両方で宣言されているからです。
881-
882-
HELPFUL: コンポーネントの機能モジュールをインポートすると、モジュール内に多くの相互依存関係があり、モジュールが小さい場合(機能モジュールは通常小さい)にテストを設定する最良の方法になる場合があります。
883-
884715
## コンポーネントプロバイダーのオーバーライド
885716

886717
`HeroDetailComponent`は独自の`HeroDetailService`を提供します。

adev-ja/src/content/guide/testing/experimental-unit-test.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ CLIで作成するプロジェクトは、デフォルトで`karma`テストシ
1818
"options": {
1919
"tsConfig": "tsconfig.spec.json",
2020
"runner": "vitest",
21-
"buildTarget": "::development",
21+
"buildTarget": "::development"
2222
}
2323
}
2424
</docs-code>

0 commit comments

Comments
 (0)