0
大家都不存在。我正在通过这个boilerplate构建一个Ionic应用程序。 现在,我正在为特定页面构建测试,并且我正在使用茉莉花来嘲笑提供程序并设置方法的预期行为。 这就是beforeEach()如何方法看起来像看起来像:Ionic + Jasmine + Tslint - 属性'和'
beforeEach(() => {
mockLoadingController = jasmine.createSpyObj('ModalController', ['create', 'present', 'dismiss']);
mockLoadingController.create.and.returnValue(mockLoadingController);
mockModalController = jasmine.createSpyObj('LoadingController', ['create', 'present',
'onDidDismiss', 'dismiss']);
mockModalController.create.and.returnValue(mockModalController);
mockGeolocation = jasmine.createSpyObj('Geolocation', ['getCurrentPosition']);
mockGeolocation.getCurrentPosition.and.callFake(() => {
return {then: () => { }};
});
mockEvents = jasmine.createSpyObj('Events', ['publish', 'subscribe']);
TestBed.configureTestingModule({
schemas: [CUSTOM_ELEMENTS_SCHEMA],
providers: [
{ provide: NavController, useValue: mockNavController },
{ provide: LoadingController, useValue: mockLoadingController },
{ provide: ModalController, useValue: mockModalController },
{ provide: Geolocation, useValue: mockGeolocation },
{ provide: Events, useValue: mockEvents },
LocationPage,
],
},
); });
当我定义为getCurrentPosition方法的承诺回报的问题开始:
mockGeolocation.getCurrentPosition.and.callFake(() => {
return {then: () => { }};
});
我使用tslint而测试,它给我以下错误
ERROR in [at-loader] ./src/pages/location/location.page.spec.ts:24:40
TS2339: Property 'and' does not exist on type '(options?: GeolocationOptions) => Promise<Geoposition>'.
问题是:我如何克服这个问题,使TSLint不再抱怨这个代码?
看来你的问题不在于tslint。你的代码'mockGeolocation.getCurrentPosition.and.callFake'是错误的。我认为它需要像这样:'mockGeolocation.create.and.getCurrentPosition ....'。看看其他模拟模式(例如'mockModalController') – Diullei