У меня есть этот установочный код для моего теста

beforeEach(() => {
        loggerServiceSpy = jasmine.createSpyObj('LoggerService', ['log', 'naam']);
        TestBed.configureTestingModule({
            declarations: [UserslistComponent, BizPipe],
            providers: [
                { provide: UserdataService, useClass: MockUserdataService },
                { provide: LoggerService, useValue: loggerServiceSpy }
            ]
        }).compileComponents();
        fixture = TestBed.createComponent(UserslistComponent); 
        component = fixture.componentInstance;
        fixture.detectChanges();
    });

Я хочу, чтобы он внедрил экземпляр MockUserdataService (что есть) и созданный loggerServiceSpy.

Теперь в UserslistComponent введенный тип LoggerService - это «настоящий» LoggerService, а не мой шпион.

Я видел это, записывая в консоль имя LoggerService (я дал loggerservice свойство name).

Это конструктор UserslistComponent: constructor(private userDataService: UserdataService, private logger: LoggerService) {

1
Michel 5 Окт 2018 в 13:49

1 ответ

Лучший ответ

Попробуйте переопределить компонент, если в компоненте предоставляются услуги:

beforeEach(() => {
        loggerServiceSpy = jasmine.createSpyObj('LoggerService', ['log', 'naam']);
        TestBed.configureTestingModule({
            declarations: [UserslistComponent, BizPipe],

        }).overrideComponent(UserslistComponent, {
            set: {
                providers: [
                { provide: UserdataService, useClass: MockUserdataService },
                { provide: LoggerService, useValue: loggerServiceSpy }
            ],
            }
        }).compileComponents();
        fixture = TestBed.createComponent(UserslistComponent); 
        component = fixture.componentInstance;
        fixture.detectChanges();
    });
1
Sanju 5 Окт 2018 в 10:53