2017-04-25 11 views
3

以下のようなユニットテストで注入エラーが発生することがあります。私はTestBed.configureTestingModuleという設定のプロバイダで遊んだりしようとしましたが、それは助けになりませんでした。問題の調査を進めるにはどうすればいいですか?角度:ユニットテストで注入エラーをデバッグする方法

✖ should create 
    Chrome 57.0.2987 (Mac OS X 10.11.0) 
Error 
    at injectionError (webpack:///~/@angular/core/@angular/core.es5.js:1232:21 <- src/test.ts:1992:86) [angular] 
    at noProviderError (webpack:///~/@angular/core/@angular/core.es5.js:1270:0 <- src/test.ts:2030:12) [angular] 
    at ReflectiveInjector_.Array.concat.ReflectiveInjector_._throwOrNull (webpack:///~/@angular/core/@angular/core.es5.js:2772:0 <- src/test.ts:3532:19) [angular] 
    at ReflectiveInjector_.Array.concat.ReflectiveInjector_._getByKeyDefault (webpack:///~/@angular/core/@angular/core.es5.js:2811:0 <- src/test.ts:3571:25) [angular] 
    at ReflectiveInjector_.Array.concat.ReflectiveInjector_._getByKey (webpack:///~/@angular/core/@angular/core.es5.js:2743:0 <- src/test.ts:3503:25) [angular] 
    at ReflectiveInjector_.Array.concat.ReflectiveInjector_.get (webpack:///~/@angular/core/@angular/core.es5.js:2612:0 <- src/test.ts:3372:21) [angular] 
    at DynamicTestModuleInjector.Array.concat.NgModuleInjector.get (webpack:///~/@angular/core/@angular/core.es5.js:3577:0 <- src/test.ts:4337:52) [angular] 
    at resolveDep (webpack:///~/@angular/core/@angular/core.es5.js:10981:0 <- src/test.ts:11741:45) [angular] 
    at createClass (webpack:///~/@angular/core/@angular/core.es5.js:10849:0 <- src/test.ts:11609:32) [angular] 
    at createDirectiveInstance (webpack:///~/@angular/core/@angular/core.es5.js:10675:21 <- src/test.ts:11435:37) [angular] 
    at createViewNodes (webpack:///~/@angular/core/@angular/core.es5.js:12024:33 <- src/test.ts:12784:49) [angular] 
    at callViewAction (webpack:///~/@angular/core/@angular/core.es5.js:12394:0 <- src/test.ts:13154:13) [angular] 
    at execComponentViewsAction (webpack:///~/@angular/core/@angular/core.es5.js:12333:0 <- src/test.ts:13093:13) [angular] 
    at createViewNodes (webpack:///~/@angular/core/@angular/core.es5.js:12051:0 <- src/test.ts:12811:5) [angular] 

私が使用しています:angular: 4.0.0 ng-cli: 1.0.0

答えて

1

は、一つの可能​​な方法を見つけました。スタックトレースは、エラーが発生しresolveDep方法がありますを示しています。ドキュメントに記載され

debugger; 
return startView.root.ngModule.injector.get(depDef.token, notFoundValue); 

とリフレッシュカルマのブラウザページ:

at resolveDep (webpack:///~/@angular/core/@angular/core.es5.js:10982:0 <- src/test.ts:11742:45) [angular] 

ので、私は、このメソッド内のブレークポイントを置くhttps://angular.io/docs/ts/latest/testing/#!#test-debugging

どのような依存関係が必要なのかを確認するには、 enter image description here

+1

良い発見!今、私は本当になぜ地球上で最も重要な情報がエラーメッセージに全く言及されていないのだろう... module.ngfactory.jsの行から同じ情報を得ることができます: Object.defineProperty(DynamicTestModuleInjector.prototype (self .__ SqliteProvider_67 == null)){(self .__ SqliteProvider_67 = new jit_SqliteProvider49(self.parent.get(jit_SQLite50))); '_SqliteProvider_67'、{get:function(){ var self = this; if } return self .__ SqliteProvider_67; }}); 私は角4.0.2にいる。 –

関連する問題