我正在使用离子/角度来制作我的第一个非Hello World应用程序。
我已经创建了一页(map.page.ts
),该页面使用地理位置将地图定位在正确的位置。当我执行它时,它可以正常工作,但是如果我尝试运行测试,即使是默认测试:
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { IonicModule } from '@ionic/angular';
import { MapPage } from './map.page';
describe('MapPage', () => {
let component: MapPage;
let fixture: ComponentFixture<MapPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ MapPage ],
imports: [IonicModule.forRoot()]
}).compileComponents();
fixture = TestBed.createComponent(MapPage);
component = fixture.componentInstance;
fixture.detectChanges();
}));
it('should create', () => {
expect(component).toBeTruthy();
});
});
此错误失败:
Failed: R3InjectorError(DynamicTestModule)[Geolocation -> Geolocation]: NullInjectorError: No provider for Geolocation!
这是我的map.page.ts:
import { Component, OnInit } from '@angular/core';
import { Geolocation } from '@ionic-native/geolocation/ngx';
@Component({
selector: 'app-map',
templateUrl: './map.page.html',
styleUrls: ['./map.page.scss'],
})
export class MapPage implements OnInit {
lat: number = 46.204391;
lng: number = 6.143158;
zoom: number = 15;
constructor(private geolocation: Geolocation) {}
ngOnInit() {
this.geolocation
.getCurrentPosition()
.then((resp) => {
this.lat = resp.coords.latitude;
this.lng = resp.coords.longitude;
})
.catch((error) => {
console.log('Error getting location', error);
});
}
}
并且Geolocation在map.module.ts中声明:
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { IonicModule } from '@ionic/angular';
import { MapPageRoutingModule } from './map-routing.module';
import { MapPage } from './map.page';
import { AgmCoreModule } from '@agm/core';
import { AgmJsMarkerClustererModule } from '@agm/js-marker-clusterer';
import { environment } from '../../../environments/environment';
import { Geolocation } from '@ionic-native/geolocation/ngx';
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
MapPageRoutingModule,
AgmJsMarkerClustererModule,
AgmCoreModule.forRoot({
apiKey: environment.googleMapsAPIKey,
}),
],
declarations: [MapPage],
providers: [Geolocation],
})
export class MapPageModule {}
为什么业力无法加载此?
它属于MapPageModule
,未导入到TestBed
。
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { IonicModule } from '@ionic/angular';
import { MapPage } from './map.page';
describe('MapPage', () => {
let component: MapPage;
let fixture: ComponentFixture<MapPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ MapPage ],
imports: [IonicModule.forRoot()],
providers: [Geolocation],
}).compileComponents();
fixture = TestBed.createComponent(MapPage);
component = fixture.componentInstance;
fixture.detectChanges();
}));
it('should create', () => {
expect(component).toBeTruthy();
});
});