lathonez / clicker

Ionic 2 + @angular/cli Seed Project : Angular2 + Typescript + Karma + Protractor + Travis
http://lathonez.com/2018/ionic-2-unit-testing/
MIT License
430 stars 137 forks source link

TypeError: _config.setTransition is not a function #240

Closed emroussel closed 7 years ago

emroussel commented 7 years ago

After updating to ionic 3.0.1, I get the following error when running tests:

    TypeError: _config.setTransition is not a function
        at new App (webpack:///~/ionic-angular/components/app/app.js:60:0 <- src/test.ts:17817:17)
        at DynamicTestModuleInjector.get (ng:///DynamicTestModule/module.ngfactory.js:145:51)
        at DynamicTestModuleInjector.getInternal (ng:///DynamicTestModule/module.ngfactory.js:384:43)
        at DynamicTestModuleInjector.Array.concat.NgModuleInjector.get (webpack:///~/@angular/core/@angular/core.es5.js:3576:25 <- src/test.ts:3884:44)
        at resolveDep (webpack:///~/@angular/core/@angular/core.es5.js:10981:0 <- src/test.ts:11289:45)
        at createClass (webpack:///~/@angular/core/@angular/core.es5.js:10849:0 <- src/test.ts:11157:32)
        at createDirectiveInstance (webpack:///~/@angular/core/@angular/core.es5.js:10675:21 <- src/test.ts:10983:37)
        at createViewNodes (webpack:///~/@angular/core/@angular/core.es5.js:12024:33 <- src/test.ts:12332:49)
        at callViewAction (webpack:///~/@angular/core/@angular/core.es5.js:12394:0 <- src/test.ts:12702:13)
        at execComponentViewsAction (webpack:///~/@angular/core/@angular/core.es5.js:12333:0 <- src/test.ts:12641:13)
        at createViewNodes (webpack:///~/@angular/core/@angular/core.es5.js:12051:0 <- src/test.ts:12359:5)
        at createRootView (webpack:///~/@angular/core/@angular/core.es5.js:11929:0 <- src/test.ts:12237:5)
        at callWithDebugContext (webpack:///~/@angular/core/@angular/core.es5.js:13060:25 <- src/test.ts:13368:42)
        at Object.debugCreateRootView [as createRootView] (webpack:///~/@angular/core/@angular/core.es5.js:12521:0 <- src/test.ts:12829:12)
        at ComponentFactory_.Array.concat.ComponentFactory_.create (webpack:///~/@angular/core/@angular/core.es5.js:9866:25 <- src/test.ts:10174:46)
    Error: Uncaught (in promise): TypeError: _config.setTransition is not a function
        at resolvePromise (webpack:///~/zone.js/dist/zone.js:683:0 <- src/polyfills.ts:1838:17) [ProxyZone]
        at webpack:///~/zone.js/dist/zone.js:760:0 <- src/polyfills.ts:1915:17 [ProxyZone]
        at ProxyZoneSpec.Array.concat.ProxyZoneSpec.onInvokeTask (webpack:///~/zone.js/dist/proxy.js:103:0 <- src/test.ts:115347:39) [ProxyZone]
        at timer (webpack:///~/zone.js/dist/zone.js:1732:0 <- src/polyfills.ts:2887:29) [<root>]
    TypeError: Cannot set property 'details' of null
        at Object.<anonymous> (webpack:///src/pages/rental-details/rental-details.spec.ts:41:20 <- src/test.ts:48076:26)
        at Object.<anonymous> (webpack:///~/@angular/core/@angular/core/testing.es5.js:335:0 <- src/test.ts:31116:26)
        at ZoneDelegate.invoke (webpack:///~/zone.js/dist/zone.js:365:0 <- src/polyfills.ts:1520:26)
        at ProxyZoneSpec.Array.concat.ProxyZoneSpec.onInvoke (webpack:///~/zone.js/dist/proxy.js:79:0 <- src/test.ts:115323:39)
        at ZoneDelegate.invoke (webpack:///~/zone.js/dist/zone.js:364:0 <- src/polyfills.ts:1519:32)
        at Zone.run (webpack:///~/zone.js/dist/zone.js:125:0 <- src/polyfills.ts:1280:43)
        at Object.<anonymous> (webpack:///~/zone.js/dist/jasmine-patch.js:104:0 <- src/test.ts:115039:34)
        at webpack:///~/@angular/core/@angular/core/testing.es5.js:54:0 <- src/test.ts:30835:26
        at webpack:///~/@angular/core/@angular/core/testing.es5.js:105:0 <- src/test.ts:30886:17
        at ZoneDelegate.invoke (webpack:///~/zone.js/dist/zone.js:365:0 <- src/polyfills.ts:1520:26)
    TypeError: Cannot read property 'destroy' of null
        at Object.<anonymous> (webpack:///src/pages/rental-details/rental-details.spec.ts:20:12 <- src/test.ts:48059:16)
        at ZoneDelegate.invoke (webpack:///~/zone.js/dist/zone.js:365:0 <- src/polyfills.ts:1520:26)
        at ProxyZoneSpec.Array.concat.ProxyZoneSpec.onInvoke (webpack:///~/zone.js/dist/proxy.js:79:0 <- src/test.ts:115323:39)
        at ZoneDelegate.invoke (webpack:///~/zone.js/dist/zone.js:364:0 <- src/polyfills.ts:1519:32)
        at Zone.run (webpack:///~/zone.js/dist/zone.js:125:0 <- src/polyfills.ts:1280:43)
        at Object.<anonymous> (webpack:///~/zone.js/dist/jasmine-patch.js:104:0 <- src/test.ts:115039:34)
        at webpack:///~/@angular/core/@angular/core/testing.es5.js:54:0 <- src/test.ts:30835:26
        at webpack:///~/@angular/core/@angular/core/testing.es5.js:105:0 <- src/test.ts:30886:17
        at ZoneDelegate.invoke (webpack:///~/zone.js/dist/zone.js:365:0 <- src/polyfills.ts:1520:26)

The app runs fine, so it's probably a problem with the testing set up.

I tried making the same changes made in this commit, but with no luck.

Any ideas?

lathonez commented 7 years ago

Looks like you need to add a setTransition function to your ConfigMock:

https://github.com/driftyco/ionic/blob/master/src/config/config.ts#L385-L387

So something like this

setTransition(trnsName: string, trnsClass: any) {
   // this does not do anything
  }

Should do the trick? Also see this discussion which may provide some background.

lathonez commented 7 years ago

Be very happy to take a PR to the mocks here if you add useful stuff 😸

emroussel commented 7 years ago

Yep that was it, thanks!