dimanche 14 janvier 2018

Testing Ionic 3 Lazy Loading Pages with Jest

I am trying to test the contents of my pages now that I have converted them to Lazy Loading with Ionic 3. However, I constantly get compile errors in the spec.ts file, as I am not sure how to build the individual test bed parts for tab pages in the application. I am trying to simply test a standard simple page generated with the ionic generate page command.

about.module.ts

import { NgModule } from '@angular/core';
import { IonicPageModule } from 'ionic-angular';
import { AboutPage } from './about';

@NgModule({
    declarations: [
        AboutPage,
    ],
    imports: [
        IonicPageModule.forChild(AboutPage),
    ],
})
export class AboutPageModule {}

about.ts

import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';

@IonicPage()
@Component({
    selector: 'page-about',
    templateUrl: 'about.html',
})
export class AboutPage {

    constructor(public navCtrl: NavController, public navParams: NavParams) {
    }

    ionViewDidLoad() {
        console.log('ionViewDidLoad AboutPage');
    }

}

Now I am trying to to create the test file:

about.spec.ts

import { TestBed, ComponentFixture, async, inject } from '@angular/core/testing';
import { IonicPageModule, NavController, NavParams } from 'ionic-angular';

import { AboutPage } from './about';

let comp: AboutPage;
let fixture: ComponentFixture<AboutPage>;

describe('About Page', () => {

    beforeEach(async(() => {
        TestBed.configureTestingModule({
            declarations: [AboutPage],
            providers: [
                NavController,
                NavParams
            ],
            imports: [
                IonicPageModule.forChild(AboutPage)
            ]
        }).compileComponents();
    }));

    beforeEach(() => {
        fixture = TestBed.createComponent(AboutPage);
        comp    = fixture.componentInstance;
    });

    afterEach(() => {
        fixture.destroy();
        comp = null;
    });

    it('is created', () => {
        expect(fixture).toBeTruthy();
        expect(comp).toBeTruthy();
    });
});

Errors:

Can't resolve all parameters for NavParams: (?).

  15 |                              NavController,
  16 |                              NavParams
> 17 |             ],
  18 |             imports: [
  19 |                 IonicPageModule.forChild(AboutPage)
  20 |             ]

  at syntaxError (node_modules/packages/compiler/esm5/src/util.js:176:2)
  at CompileMetadataResolver.Object.<anonymous>.CompileMetadataResolver._getDependenciesMetadata (node_modules/packages/compiler/esm5/src/metadata_resolver.js:1130:10)
  at CompileMetadataResolver.Object.<anonymous>.CompileMetadataResolver._getTypeMetadata (node_modules/@angular/compiler/bundles/compiler.umd.js:15425:26)
  at CompileMetadataResolver.Object.<anonymous>.CompileMetadataResolver._getInjectableMetadata (node_modules/@angular/compiler/bundles/compiler.umd.js:15405:21)
  at CompileMetadataResolver.Object.<anonymous>.CompileMetadataResolver.getProviderMetadata (node_modules/packages/compiler/esm5/src/metadata_resolver.js:1305:14)
  at node_modules/packages/compiler/esm5/src/metadata_resolver.js:1216:7
      at Array.forEach (<anonymous>)
  at CompileMetadataResolver.Object.<anonymous>.CompileMetadataResolver._getProvidersMetadata (node_modules/packages/compiler/esm5/src/metadata_resolver.js:1176:17)
  at CompileMetadataResolver.Object.<anonymous>.CompileMetadataResolver.getNgModuleMetadata (node_modules/packages/compiler/esm5/src/metadata_resolver.js:744:10)
  at JitCompiler.Object.<anonymous>.JitCompiler._loadModules (node_modules/packages/compiler/esm5/src/jit/compiler.js:211:72)
  at JitCompiler.Object.<anonymous>.JitCompiler._compileModuleAndAllComponents (node_modules/packages/compiler/esm5/src/jit/compiler.js:189:35)
  at JitCompiler.Object.<anonymous>.JitCompiler.compileModuleAndAllComponentsAsync (node_modules/@angular/compiler/bundles/compiler.umd.js:33443:37)
  at CompilerImpl.Object.<anonymous>.CompilerImpl.compileModuleAndAllComponentsAsync (node_modules/packages/platform-browser-dynamic/esm5/src/compiler_factory.js:107:16)
  at TestingCompilerImpl.Object.<anonymous>.TestingCompilerImpl.compileModuleAndAllComponentsAsync (node_modules/@angular/platform-browser-dynamic/bundles/platform-browser-dynamic-testing.umd.js:369:31)
  at TestBed.Object.<anonymous>.TestBed.compileComponents (node_modules/packages/core/esm5/testing/src/test_bed.js:355:23)
  at Function.Object.<anonymous>.TestBed.compileComponents (node_modules/packages/core/esm5/testing/src/test_bed.js:198:33)
  at src/pages/about/about.spec.ts:17:9
  at ZoneDelegate.Object.<anonymous>.ZoneDelegate.invoke (node_modules/http://ift.tt/2mqeUBI)
  at AsyncTestZoneSpec.Object.<anonymous>.AsyncTestZoneSpec.onInvoke (node_modules/http://ift.tt/2qSUxlt)
  at ProxyZoneSpec.Object.<anonymous>.ProxyZoneSpec.onInvoke (node_modules/http://ift.tt/2mpnkte)
  at ZoneDelegate.Object.<anonymous>.ZoneDelegate.invoke (node_modules/http://ift.tt/2mpngK0)
  at Zone.Object.<anonymous>.Zone.runGuarded (node_modules/http://ift.tt/2r4hi5L)
  at runInTestZone (node_modules/@angular/core/bundles/core-testing.umd.js:141:25)
  at node_modules/@angular/core/bundles/core-testing.umd.js:80:13
  at ZoneDelegate.Object.<anonymous>.ZoneDelegate.invoke (node_modules/http://ift.tt/2mqeUBI)
  at ProxyZoneSpec.Object.<anonymous>.ProxyZoneSpec.onInvoke (node_modules/http://ift.tt/2qSUt5d)
  at ZoneDelegate.Object.<anonymous>.ZoneDelegate.invoke (node_modules/http://ift.tt/2mpngK0)
  at Zone.Object.<anonymous>.Zone.run (node_modules/http://ift.tt/2qVxXs7)
  at Object.testBody.length.done (node_modules/jest-zone-patch/index.js:51:29)

Aucun commentaire:

Enregistrer un commentaire