2017-06-16 7 views
18

私はルートリゾルバをテストしようとしていますが、テスト中にTypeError: ctor is not a constructorがあり、typescriptコンパイル時にエラーが発生しない理由がわかりません。angular 4 unit testing error `TypeError:ctorはコンストラクタではありません。 '

TypeError: ctor is not a constructor 
TypeError: ctor is not a constructor 
    at _createClass (http://localhost:9877/_karma_webpack_/vendor.bundle.js:42355:26) 
    at _createProviderInstance$1 (http://localhost:9877/_karma_webpack_/vendor.bundle.js:42330:26) 
    at resolveNgModuleDep (http://localhost:9877/_karma_webpack_/vendor.bundle.js:42315:17) 
    at _createClass (http://localhost:9877/_karma_webpack_/vendor.bundle.js:42362:26) 
    at _createProviderInstance$1 (http://localhost:9877/_karma_webpack_/vendor.bundle.js:42330:26) 
    at resolveNgModuleDep (http://localhost:9877/_karma_webpack_/vendor.bundle.js:42315:17) 
    at NgModuleRef_.webpackJsonp../node_modules/@angular/core/@angular/core.es5.js.NgModuleRef_.get (http://localhost:9877/_karma_webpack_/vendor.bundle.js:43401:16) 
    at TestBed.webpackJsonp../node_modules/@angular/core/@angular/core/testing.es5.js.TestBed.get (http://localhost:9877/_karma_webpack_/vendor.bundle.js:48412:47) 
    at http://localhost:9877/_karma_webpack_/vendor.bundle.js:48418:61 
    at Array.map (native) 
+0

あなたはng2ブートストラップ –

+0

はいを​​使用していますか?私はルートリゾルバをテストしています。私のルートリゾルバに影響を与えているのはhtmlでもcssでもない –

答えて

46

これはプロバイダー宣言に誤りがある可能性があります。

プロバイダをモックし、useValueの代わりにuseClassを使用すると、エラー "TypeError:ctor is not a constructor"が発生します。

ここ

がエラーを発生させます例です

providers: [{provide: OrderService, useClass: new OrderServiceMock()}] 

正しい宣言は次のとおりです。

providers: [{provide: OrderService, useValue: new OrderServiceMock()}] 
+0

あなたは私の日を救った –

2

AOTと私のアプリを構築するとき、私はまったく同じメッセージを持っていました。

@abahetが提案したように、私の問題はプロバイダに関連していませんでした。

私はAOTに準拠していない新しいライブラリをセットアップしていたため(プロバイダもなかったため)問題のライブラリは、エクスポート(私は、TypescriptのエクスポートについてはAngularモジュールではなく)について、モジュール(この場合はコンポーネントとパイプ)にインポートされたものについて話しています。

1

3つ目の可能性があります。私は他のモジュールを含むモジュールを持っていて、他のモジュールをエクスポートしませんでした。

0

Firebase Universal StarterプロジェクトのFirebaseと組み合わせてAngular Universalにこの問題が発生しました。私はスタックオーバーフローの潜在的な修正が役に立たなかったので、ほとんど願望を失ってしまった。だから私は、次のようでした:

  1. アップデートをhttps://www.npmjs.com/package/npm-check-updates
  2. を持つすべてのNPMパッケージはnode_modulesと.package-lock.jsonを削除し、それらに変更されたAPIの
  3. によるすべてのエラーは今、それが働いていた固定
  4. を再インストール:-)

エラーが発生したパッケージは一度も見つかりませんでしたが、モジュールを1つずつ削除するMockAppModuleを作成する方法があります。最終的に問題のあるものが見つかります。しかし、私の場合、私は盗んだパッケージの1つが更新されたか、何かが原因だと思うのは幸運なことです。

関連する問題