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

1.3K
Views
La prueba Jasmine Angular 9 falla porque el seguimiento de la pila es 'inalcanzable' en inyectableDefOrInjectorDefFactory

Creé una aplicación Angular menor a 4. Migré de una versión a otra y actualmente soy la última versión 9. Estaba revisando mis pruebas. Tengo un componente de inicio de sesión en el que tuve 3 pruebas de trabajo y ahora todas fallan. Ahora está devolviendo lo siguiente:

 LoginComponent should be created ... Failed: unreachable Error: unreachable at injectableDefOrInjectorDefFactory (http://localhost:9876/_karma_webpack_/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:17302:1) at providerToFactory (http://localhost:9876/_karma_webpack_/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:17402:1) at providerToRecord (http://localhost:9876/_karma_webpack_/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:17349:1) at R3Injector.processProvider (http://localhost:9876/_karma_webpack_/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:17165:1) at http://localhost:9876/_karma_webpack_/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:17144:1 at http://localhost:9876/_karma_webpack_/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:1400:1 at Array.forEach (<anonymous>) at deepForEach (http://localhost:9876/_karma_webpack_/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:1400:1) at R3Injector.processInjectorType (http://localhost:9876/_karma_webpack_/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:17140:1) at http://localhost:9876/_karma_webpack_/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:16881:1

La prueba de jazmín es la siguiente:

 // File: login.component.spec.ts import { async, ComponentFixture, TestBed, inject, fakeAsync, tick } from '@angular/core/testing'; import { FormsModule, ReactiveFormsModule, NgForm } from '@angular/forms'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { of, throwError } from 'rxjs'; import { SelectItem } from 'primeng/api'; import { Dialog } from 'primeng/dialog'; import { Header, Footer } from 'primeng/api'; import { ButtonModule } from 'primeng/button'; // import { AlertsService } from '../../global/alerts/alerts.service'; import { UserService } from '../../net-incident/services/user.service'; import { AuthService } from '../../net-incident/services/auth.service'; import { LoginComponent } from './login.component'; import { ServerSelectionWindowComponent } from '../../net-incident/server-selection-window/server-selection-window.component'; // describe('LoginComponent', () => { let sut: LoginComponent; let fixture: ComponentFixture<LoginComponent>; let alertService: AlertsService; const authServiceSpy = jasmine.createSpyObj('AuthService', ['authenticate', 'logout', 'isLoggedIn', 'isLoggedOut']); const userServiceSpy = jasmine.createSpyObj('UserService', ['emptyUser', 'getUser', 'getUserServer']); // beforeEach(async(() => { TestBed.configureTestingModule({ imports: [ FormsModule, ButtonModule, BrowserAnimationsModule ], declarations: [ LoginComponent, Dialog, Header, Footer, ServerSelectionWindowComponent ], providers: [ { provide: AlertsService, useClass: AlertsService }, { provide: AuthService, useValue: authServiceSpy }, { provide: UserService, useClass: userServiceSpy } ] } ); alertService = TestBed.get( AlertsService ); TestBed.compileComponents(); })); beforeEach(() => { fixture = TestBed.createComponent(LoginComponent); sut = fixture.componentInstance; fixture.detectChanges(); }); it('should be created ...', () => { expect( sut ).toBeTruthy(); }); });
over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

providers: [ ... { provide: UserService, useClass: userServiceSpy } ]

Debería cambiarse a:

 providers: [ ... { provide: UserService, useValue: userServiceSpy } ]
over 4 years ago · Santiago Trujillo Report

0

También puede crear una clase simulada para usarla como su UserService:

 class MockUserService { myMethod(): void { // mocked logic } } describe('LoginComponent', () => { ... providers: [ ... { provide: UserService, useClass: MockUserService } ] ... });
over 4 years ago · Santiago Trujillo Report

0

Para mí, cambié useClass por useValue. Como el siguiente ejemplo:

 TestBed.configureTestingModule({ declarations: [...], imports: [...], providers: [ { provide: PlansService, useClass: mockPlansService }, { provide: AuthService, useClass: mockOAuthService } ] }).compileComponents();

Para esto

 TestBed.configureTestingModule({ declarations: [...], imports: [...], providers: [ { provide: PlansService, useValue: mockPlansService }, { provide: AuthService, useValue: mockOAuthService } ] }).compileComponents();
over 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!