Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

226
Views
TestBed configureTestingModule define importaciones, declaraciones, proveedores y conductos comunes a todas las especificaciones en un módulo: patrón

¿Existe una forma óptima de definir importaciones, declaraciones, proveedores comunes a todas las especificaciones (es decir, módulos comunes a todas las especificaciones definidos en un lugar como lo hacemos en @NgModule) en un solo lugar como lo hacemos en @NgModule para las pruebas unitarias de aplicaciones?

Nota: Llame a configureTestingModule dentro de beforeEach para que TestBed pueda restablecerse a un estado base antes de que se ejecute cada prueba. como en el documento

Aquí, en una de mis especificaciones de prueba, tengo que cargar los mismos módulos, componentes y directivas, etc., que también utilizan otras especificaciones.

 describe('Component: Login', () => { let loginFixture, loginComponent, loginComponentElement,loginComponentDebugElement; beforeEach(async(() => { TestBed.configureTestingModule({ imports: [FormsModule, ReactiveFormsModule, MaterialRootModule, ModalModule, DatepickerModule, DropdownModule, AccordionModule], //--> here we load n number of mudoles declarations: [LoginComponent, LoginHeaderComponent, LoginColumnComponent, LoginColumnContentComponent, LoginStatusLaneComponent, LoginSettingsComponent, LoginLaneComponent, SortableDirective, WindowHeightDirective, ConfirmDirective, ConfirmPopoverComponent, ConfirmationDialogComponent, ConfirmationDialogDirective], //--> here we load n number of components directive and piper providers: [LoginComponent, MockBackend, BaseRequestOptions, ComponentLoaderFactory, ConfirmOptions, { provide: Http, useFactory: (backend, options) => new Http(backend, options), deps: [MockBackend, BaseRequestOptions] }, {provide: AuthService, useClass: MockAuthService}, {provide: AppContextService, useClass: MockAppContextService}, {provide: NotificationsService, useClass: MockNotificationsService}, {provide: PositioningService}] //--> here we load n number of services }).compileComponents(); loginFixture = TestBed.createComponent(LoginComponent); loginComponent = loginFixture.componentInstance; loginComponentElement = LoginFixture.nativeElement; loginComponentDebugElement = LoginFixture.debugElement; })); it('should have a defined component', () => { expect(LoginComponent).toBeDefined(); }); });

Nota: Problema de Git Angular TestBed.configureTestingModule Problema de rendimiento

¿Hay algún patrón para que sea común, como cargar todos los componentes de estos módulos, etc., antes de ejecutar todos los archivos spec.ts e inyectar la dependencia respectiva para cada especificación? Cualquier ayuda sería genial.

about 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Mi respuesta es incompleta que has llegado a esperar. Pero espero que si te puede ayudar aunque sea un poco.

router-stubs.ts

 //----------Default Import------------ import { BrowserModule } from '@angular/platform-browser'; import { FormsModule } from '@angular/forms'; import { HttpModule } from '@angular/http'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; ...snip... export const test_imports = [ BrowserModule, FormsModule, HttpModule, BrowserAnimationsModule ];

cada prueba.spec.ts

 import { test_imports } from '../testing/router-stubs'; ..snip.. imports: [test_imports],

pero los proveedores/declaraciones no pueden usarse de la misma manera.

about 4 years ago · Santiago Trujillo Report

0

Debe definir TestBed.configureTestingModule antes del método de descripción. para que pueda estar disponible a nivel mundial. Así que ahora sus casos de prueba se verán así.

 TestBed.configureTestingModule({ imports: [FormsModule, ReactiveFormsModule, MaterialRootModule, ModalModule, DatepickerModule, DropdownModule, AccordionModule], //--> here we load n number of mudoles declarations: [LoginComponent, LoginHeaderComponent, LoginColumnComponent, LoginColumnContentComponent, LoginStatusLaneComponent, LoginSettingsComponent, LoginLaneComponent, SortableDirective, WindowHeightDirective, ConfirmDirective, ConfirmPopoverComponent, ConfirmationDialogComponent, ConfirmationDialogDirective], //--> here we load n number of components directive and piper providers: [LoginComponent, MockBackend, BaseRequestOptions, ComponentLoaderFactory, ConfirmOptions, { provide: Http, useFactory: (backend, options) => new Http(backend, options), deps: [MockBackend, BaseRequestOptions] }, {provide: AuthService, useClass: MockAuthService}, {provide: AppContextService, useClass: MockAppContextService}, {provide: NotificationsService, useClass: MockNotificationsService}, {provide: PositioningService}] //--> here we load n number of services }).compileComponents(); describe('Component: Login', () => { let loginFixture, loginComponent, loginComponentElement, loginComponentDebugElement; beforeEach(async(() => { loginFixture = TestBed.createComponent(LoginComponent); loginComponent = loginFixture.componentInstance; loginComponentElement = LoginFixture.nativeElement; loginComponentDebugElement = LoginFixture.debugElement; })); it('should have a defined component', () => { expect(LoginComponent).toBeDefined(); }); });
about 4 years ago · Santiago Trujillo Report

0

No hay necesidad de buscar una biblioteca separada solo para lograr esto. Puede crear un TestBed global simplemente creando un módulo angular común donde puede definir un método de utilidad. Este método de utilidad crea TestBed que luego puede reutilizar en todos sus archivos de especificaciones.

Puede consultar la respuesta a continuación, que también incluye código de muestra: (Posible duplicado) https://stackoverflow.com/a/64835814/4184651

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!