• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

426
Views
Fallo de Jasmine: Error: <spyOn>: no se pudo encontrar un objeto para espiar para postSkillforMember()

Estoy tratando de probar un método que no devuelve nada. El método llama a un servicio para realizar un HTTP POST. Me burlé de mi servicio y lo configuré como un parámetro dentro de SpyOn. El segundo parámetro en la llamada de SpyOn es el nombre del método que contiene la operación de publicación. En este caso, el nombre del método es postSkillforMember. Cuando ejecuto la prueba ng, las fallas de la lista de especificaciones de Jasmine arrojan el siguiente error:

Lista de especificaciones de jazmín | Fallas:

 AddSkillModalComponent > Testing addSkill() success Error: <spyOn> : could not find an object to spy upon for postSkillforMember()

¿Que estoy haciendo mal? Este es el método en mi componente.ts que quiero probar:

Método para probar:

 addSkill(): void { this.successCallback=(skill: any) => { this.showAlert = false; this.activeModal.close(skill); }; this.errorCallback=(error: any)=>{ this.showAlert=true; }; const skillFormBody = { skill: { "id": this.itemFormGroup.get("skill")?.value.id, "skill": "" }, skillLevel: { "id": this.itemFormGroup.get("skillLevel")?.value.id, "skillLevel": "" } } this._skillAddService.postSkillforMember( this.memberId, skillFormBody, this.successCallback, this.errorCallback );}

Mis especificaciones se burlan del servicio dentro de la descripción:

describir en add-skill-modal.component.ts:

 describe('AddSkillModalComponent', () => { let component: AddSkillModalComponent; let fixture: ComponentFixture<AddSkillModalComponent>; let mockSkillAddService: jasmine.SpyObj<SkillAddService>;}

Y, finalmente, esta es la prueba unitaria que escribí para mi método:

en add-skill-modal.component.ts:

 it('Testing addSkill() success', () => { spyOn(mockSkillAddService, 'postSkillforMember'); component.addSkill(); expect(component.showAlert).toBeFalsy(); });

Realmente aprecio tu ayuda. Gracias de antemano.

almost 3 years ago · Juan Pablo Isaza
1 answers
Answer question

0

¿Puedes mostrar tu TestBed.configureTestingModule({ ?

Asegúrese de crear un spyObj para SkillAddService y agréguelo a los proveedores.

 beforeEach(waitForAsync(() => { // make sure you create this spy object with postSkillforMember public method to be mocked mockSkillAddService = jasmine.createSpyObj<SkillAddService>('SkillAddService', ['postSkillforMember']); TestBed.configureTestingModule({ declarations: [...], // provide the mock instead of the real one providers: [{ provide: SkillAddService, useValue: mockSkillAddService }], }).compileComponents(); })); it('Testing addSkill() success', () => { // no need to spy anymore // spyOn(mockSkillAddService, 'postSkillforMember'); component.addSkill(); expect(component.showAlert).toBeFalsy(); // can do: expect(mockSkillAddService.postSkillforMember).toHaveBeenCalled(); });
almost 3 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error