1. ホーム
  2. angular

[解決済み] angular 4 ユニットテストエラー `TypeError: ctor is not a constructor`.

2023-01-13 14:28:30

質問

ルートリゾルバをテストしようとしているのですが、テスト中に TypeError: ctor is not a constructor となり、typescriptのコンパイル時にエラーが発生しないのに、なぜそれが起こるのかわかりません。

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)

どのように解決するのですか?

プロバイダの宣言に誤りがある可能性があります。

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

以下は、このエラーを発生させる例です。

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

正しい宣言は:

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