web-dev-qa-db-ja.com

ng run test return error-TypeError:_this.handler.handleは関数ではありません

angular 5.2.0でc3棒グラフを作成しました。すべて正常に機能しています。しかし、npm run testでカルマとジャスミンを使用してテストを実行したいだけです。しかし、以下の問題。rxjs関数に関連しているといいのですが、エラーコアがわかりません。誰かがこれを解決するのを手伝ってください。

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)

App.module.tsに次の変更を加えることで、この問題を解決することができました。お役に立てれば。

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

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

HttpTestingControllerを使用するようにテストを変換しようとしたときに、この問題に遭遇しました。 This answerは単に問題を抑制し、コンソールに出力します。以下の私の解決策について私がまだ理解していないことがたくさんありますが、うまくいけばそれが誰かを助けることができます。

私のアプリケーションの問題は、HttpHandlerリストにprovidersを提供していたことでした。これにより、スタックトレースの_this.handlerの問題のある行でhttp.jsHttpHandlerになりました。

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

TestBed.configureTestModuleのプロバイダーからHttpHandlerを削除したところ、_this.handlerは適切なHttpInterceptorHandler関数を持つhandleでした。

2
Bill

述べられているように、エラー処理なしのサブスクライブがこれを引き起こす可能性があるようです ここ 。そのリンクの答えは次の例を提供します:

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