wake-up-neo.com

ng run test test return error - TypeError: _this.handler.handle ist keine Funktion

Ich habe das C3-Balkendiagramm mit Winkel 5.2.0 erstellt. Alle arbeiten gut. Aber ich möchte nur den Test mit Karma und Jasmin mit npm run test ausführen. Ich habe aber folgende Probleme. Ich hoffe, es hängt mit der Funktion von rxjs zusammen. Aber ich kann den Fehler nicht verstehen. Bitte helfen Sie jedem, das Problem zu lösen. 

TypeError: _this.handler.handle is not a function
    at MergeMapSubscriber.project (http://localhost:9876/_karma_webpack_/webpack:/C:/Workspace/datawens-master/node_modules/@angular/common/esm5/http.js:1466:80)
    at MergeMapSubscriber.webpackJsonp.../../../../rxjs/_esm5/operators/mergeMap.js.MergeMapSubscriber._tryNext (http://localhost:9876/_karma_webpack_/webpack:/C:/Workspace/datawens-master/node_modules/rxjs/_esm5/operators/mergeMap.js:128:1)
    at MergeMapSubscriber.webpackJsonp.../../../../rxjs/_esm5/operators/mergeMap.js.MergeMapSubscriber._next (http://localhost:9876/_karma_webpack_/webpack:/C:/Workspace/datawens-master/node_modules/rxjs/_esm5/operators/mergeMap.js:118:1)
    at MergeMapSubscriber.webpackJsonp.../../../../rxjs/_esm5/Subscriber.js.Subscriber.next (http://localhost:9876/_karma_webpack_/webpack:/C:/Workspace/datawens-master/node_modules/rxjs/_esm5/Subscriber.js:92:1)
    at ScalarObservable.webpackJsonp.../../../../rxjs/_esm5/observable/ScalarObservable.js.ScalarObservable._subscribe (http://localhost:9876/_karma_webpack_/webpack:/C:/Workspace/datawens-master/node_modules/rxjs/_esm5/observable/ScalarObservable.js:51:1)
    at ScalarObservable.webpackJsonp.../../../../rxjs/_esm5/Observable.js.Observable._trySubscribe (http://localhost:9876/_karma_webpack_/webpack:/C:/Workspace/datawens-master/node_modules/rxjs/_esm5/Observable.js:172:1)
    at ScalarObservable.webpackJsonp.../../../../rxjs/_esm5/Observable.js.Observable.subscribe (http://localhost:9876/_karma_webpack_/webpack:/C:/Workspace/datawens-master/node_modules/rxjs/_esm5/Observable.js:160:1)
    at MergeMapOperator.webpackJsonp.../../../../rxjs/_esm5/operators/mergeMap.js.MergeMapOperator.call (http://localhost:9876/_karma_webpack_/webpack:/C:/Workspace/datawens-master/node_modules/rxjs/_esm5/operators/mergeMap.js:92:1)
    at Observable.webpackJsonp.../../../../rxjs/_esm5/Observable.js.Observable.subscribe (http://localhost:9876/_karma_webpack_/webpack:/C:/Workspace/datawens-master/node_modules/rxjs/_esm5/Observable.js:157:1)
    at FilterOperator.webpackJsonp.../../../../rxjs/_esm5/operators/filter.js.FilterOperator.call (http://localhost:9876/_karma_webpack_/webpack:/C:/Workspace/datawens-master/node_modules/rxjs/_esm5/operators/filter.js:61:1)

Ich konnte dieses Problem lösen, indem ich die folgenden Änderungen in app.module.ts vorgenommen habe. Hoffe das hilft.

import { HttpClient } from '@angular/common/http';
import { HttpClientModule } from '@angular/common/http';
...
...

@NgModule({
  declarations: [
    MyApp,
    HomePage,
    CameraPage,
  ],
  imports: [
    BrowserModule,
//  HttpClient,
   HttpClientModule,

4
Prashant

Ich bin auf dieses Problem gestoßen, als ich versuchte, meine Tests in HttpTestingController umzuwandeln. Diese Antwort unterdrückt einfach das Problem und druckt es auf die Konsole. Es gibt vieles, was ich für meine Lösung unten immer noch nicht verstehe, aber hoffentlich kann es jemandem helfen.

Das Problem in meiner Bewerbung war, dass ich HttpHandler in meiner providers-Liste zur Verfügung stellte. Dies führte dazu, dass _this.handler eine HttpHandler in der fehlerhaften Zeile in http.js im Stack-Trace war.

var /** @type {?} */ events$ = concatMap.call(of(req), function (req) { return _this.handler.handle(req); });

Ich habe HttpHandler von den Anbietern in meinem TestBed.configureTestModule entfernt und dann war _this.handler eine HttpInterceptorHandler, die die entsprechende handle-Funktion hatte.

2
Bill

Anscheinend kann ein Abonnement ohne Fehlerbehandlung dazu führen, wie hier . Die Antwort in diesem Link liefert das folgende Beispiel:

user_login() {
this.userService.login(credentials).subscribe((res) => {
console.log(res);
}, (error) => {
console.log(error);
});
0
user42488