вот мой контекст, проект angular5, библиотека ngx-swiper-wrapper, жасмин и карма.
Я пишу модульные тесты для моего компонента, но у меня проблема в моем модульном тесте:
TypeError: undefined не является объектом (оценка 'this.swiperComponentRef.directiveRef')
ngAfterViewInit @ http://localhost:8011/_karma_webpack_/main.bundle.js:3642:31382 callProviderLifecycles ...
Это мой модульный тест :
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { ExperienceModalComponent } from './experience.modal';
import { SwiperModule, SWIPER_CONFIG, SwiperComponent, SwiperDirective } from 'ngx-swiper-wrapper';
import { DEFAULT_SWIPER_CONFIG } from '../../../config/swiper';
describe('MyComponent', () => {
let component: MyComponent;
let fixture: ComponentFixture<MyComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [SwiperModule],
declarations: [MyComponent],
providers: [
{ provide: SWIPER_CONFIG, useValue: DEFAULT_SWIPER_CONFIG }
],
schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(MyComponent);
component.swiperComponentRef = <any>{
directiveRef: {
update: jasmine.createSpy('update'),
nextSlide: jasmine.createSpy('nextSlide')
}
};
fixture.detectChanges();
});
describe('#constructor', () => {
it('should create', () => {
expect(component).toBeTruthy();
});
});
});
А это мой компонент :
import { Component, Input, ViewChild, AfterViewInit } from '@angular/core';
import { SwiperComponent, SwiperConfigInterface } from 'ngx-swiper-wrapper';
@Component({
selector: 'app-my-content',
templateUrl: './my-component.html',
styleUrls: ['./my-component.scss']
})
export class MyComponent implements AfterViewInit {
public swiperConfig: SwiperConfigInterface = {
keyboard: false,
mousewheel: false,
scrollbar: false,
navigation: false,
pagination: false,
autoplay: false
};
@ViewChild(SwiperComponent) swiperComponentRef: SwiperComponent;
constructor() {
}
ngAfterViewInit(): void {
this.swiperComponentRef.directiveRef.update();
}
}
Кажется, что в fixture.detectChanges (), когда происходит жизненный цикл компонента, что-то не работает должным образом, и по какой-то причине swiperComponentRef больше не является тем, чем он должен быть.
Любые предложения, как исправить тест? Спасибо