Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

150
Visualizações
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.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

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.

over 4 years ago · Santiago Trujillo Relatório

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(); }); });
over 4 years ago · Santiago Trujillo Relatório

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

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda