0

Jasmine can be used to spy on private methods.

Can you use Jasmine to stub out a private method in an Angular component? The pattern I am using spies on specific providers - not components.

Can you stub out and spy on private methods in the component itself?

Or do I have to move the code out into a provider/service in order to stub it out?

import { async, ComponentFixture, TestBed } from '@angular/core/testing';

describe('Component1', () => {
    let component: Component1;
    let fixture: ComponentFixture<Component1>;
    let component1ComponentSpy: any;

    beforeEach(async(() => {
        component1ComponentSpy = jasmine.createSpyObj('component1Component', ['logError']);
        component1ComponentSpy.logError = jasmine.createSpy().and.stub();
    }));

    it('should stub a private method', () => {      
        ConfigureTestingModule();       
    });

    function ConfigureTestingModule() {
        TestBed.configureTestingModule({
            declarations: [Component1],
            imports: [],
            providers: [
                { provide: Component1, useValue: component1ComponentSpy}
            ]
        }).compileComponents();
    
        fixture = TestBed.createComponent(Component1);
        component = fixture.componentInstance;
        fixture.detectChanges();
    }
});

import { Component, Input, OnInit, Renderer2 } from '@angular/core';

@Component({})

export class Component1 implements OnInit {
    constructor() { }

    ngOnInit(): void {}

    private logError(){}
}
2

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.