トップレベルモジュールAppModule
を持つAngular(4.x)アプリケーションがあります。これはいくつかのカスタムコンポーネントを宣言しているので、テンプレート。TestBedにトップレベルモジュールをロードするのではなく、スペックファイルのコンポーネント宣言
しかし、ジャスミン/カルマのための最も一般的なアプローチはBrowserDynamicTestingModule
を使用しているように見えるテストとbeforeEach
時に必要なすべてのカスタムコンポーネントを宣言し、例えば:
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ MyComponent, SomeDependedUponComponent ]
})
.compileComponents();
}));
我々はとにかく、メインアプリケーションの環境をシミュレートしている考えると、なぜAppModule
でtestBedを初期化しないので、すべてのカスタムコンポーネントがすべてのテストで使用できますか?ような何か:私は何かが欠けていないよ場合
getTestBed().initTestEnvironment(
[BrowserDynamicTestingModule, AppModule],
platformBrowserDynamicTesting()
);
が、これは、メインアプリケーションのセットアップにかなり近いとさえ、個々のスペック/テストファイルに定型的なコードを減らしています。パフォーマンスペナルティのような不利な点はありませんか?
*とにかく主なアプリケーションの環境をシミュレートしていると考えている* - 確かにそうではありません。 – estus