2017-04-07 1 views
0

には存在しません。私はこのboilerplateの上にイオンアプリを構築しています。 今、特定のページのテストを構築しています。ジャスミンを使用してプロバイダをモックし、メソッドの予想される動作を設定しています。Ionic + Jasmine + Tslint - プロパティ 'and'はタイプ

mockGeolocation.getCurrentPosition.and.callFake(() => { 
      return {then: () => { }}; 
    }); 

私はtslintの間を使用しています:問題は、私はgetCurrentPositionメソッドの約束のリターンを定義するときに起動する

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, 
      ], 
      }, 
    ); }); 

:ようbeforeEach()メソッドはルックスどのように見えるかだ テストすると、次のエラーが表示されます。

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がこのコードについてもう苦情を受けないようにすることができますか?

+0

あなたの問題はtslintではないようです。あなたのコード 'mockGeolocation.getCurrentPosition.and.callFake'は間違っています。私はそれが 'mockGeolocation.create.and.getCurrentPosition ....'のようなものである必要があると思います。他のモックのパターンを見てください(例えば、 'mockModalController')。 – Diullei

答えて

1

問題が解決しました。あなたが見ることができるように

describe('Location Page',() => { 
    let mockLoadingController: any; 
    let mockModalController: any; 
    let mockGeolocation: Geolocation; 
    let mockEvents: Events; 
    beforeEach(() => { 
    //rest of the code here 

が、私はmockGeolocation変数にタイプを定義し、私は任意のとして他人を設定しました: は私は細部に私は変数を宣言された方法を忘れてしまいました。すべての変数をジャスミンで完全に動作するものとして設定すると、tslintにエラーは発生しません。

だから、正しいコードは次のように動作します。

describe('Location Page',() => { 
    let mockLoadingController: any; 
    let mockModalController: any; 
    let mockGeolocation: any; 
    let mockEvents: any; 
    beforeEach(() => { 
関連する問題