Lets say I have a simple module AppModule
which has many imports, declarations and providers. Now I want to write a test for a component ListComponent
which is located in this module's declaration list. ListComponent
itself uses many, (but not every) import of the AppModule
. I do it like this:
import { TestBed } from '@angular/core/testing';
// +same copy-pasted list of imports from `AppModule`
beforeEach(done => {
TestBed.configureTestingModule({
imports: [
// +same copy-pasted list of imports from `AppModule`
],
declarations: [
// +same copy-pasted list of declarations from `AppModule`
],
providers: [
{
provide: Http,
useClass: HttpMock,
},
{
provide: Router,
useClass: RouterMock,
}
// +same copy-pasted list of providers from `AppModule`
]
});
It works, but surely it is an incorrect approach. I do not want to copy-paste so much. Maybe I can reuse the AppModule in some convenient approach? Pseudocode would be like:
let appModule = new AppModule();
beforeEach(done => {
TestBed.configureTestingModule({
imports: appModule.imports,
declarations: appModule.declarations,
providers: [...appModule.providers,
{
provide: Http,
useClass: HttpMock,
},
{
provide: Router,
useClass: RouterMock,
}
]
});
But I just do not know/cannot find the syntax for such approach :(