Как выполнить модульные тесты из onMapReady () в ngx-листовке (Angular 2) - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть довольно сложный компонент карты, созданный с помощью ngx-leaflet в большом приложении Angular 2.Я пытаюсь написать модульные тесты, но не могу понять, как заставить onMapReady() работать в моем файле test (component.spec.ts).

Мой HTML-код для самой карты довольно прост:

<div class="map"
     leaflet
     [leafletOptions]="mapOptions"
     [leafletLayers]="layers"
     [leafletFitBounds]="fitBounds"
     [leafletLayersControl]="layersControl"
     [leafletLayersControlOptions]="layersControlOptions"
     (leafletMapReady)="onMapReady($event)">
</div>

Соответствующий файл TS:

onMapReady(map: L.Map) {
    this.leafletMap = map;
    ...
}

onMapReady заполнен кучей различных кодов картынекоторые наблюдаемые и т. д. Чтобы состояние карты сохранялось при переходе пользователя на другие страницы приложения, код должен быть в onMapReady.

Мой тестовый файл, опять же, довольно стандартный.Вот фрагмент метода beforeEach:

beforeEach(() => {
  fixture = TestBed.createComponent(OspMapComponent);
  component = fixture.componentInstance;
  ...
  component.ngOnInit();
  fixture.detectChanges();
});

Насколько я понимаю, включение component.ngOnInit() в метод beforeEach запускает весь код в методе ngOnInit компонента.Мне нужно сделать то же самое для метода onMapReady, но я не совсем понимаю, как обращаться с ним и его $event объектом.

Включение component.onMapReady(); в beforeEach дает ошибку 'Ожидаемый 1аргументы, но получил 0. 'В том числе component.onMapReady(map: L.map); выдает ошибку «Ожидается 1 аргумент, но получено 2».Несколько вариантов этого не сработали для меня.Я попытался поместить все из onMapReady в его собственный метод и вызвать этот метод внутри onMapReady, а затем поместить этот метод в начало моего тестового файла, но это вызывает другие проблемы в моих тестах.Есть ли способ правильно запустить все содержимое onMapReady в тестовом файле?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...