2

私の services.js ファイルは非常に大きくなっていたので、個々のサービスを個別のファイル (service1.js、service2.js など) に分割するのが最善であると判断しました。

残念ながら、これは私の単体テストをすべて壊しました。サービスの依存関係をテストにインポートできなくなりました。単体テストを実行すると、次のようなエラーが表示されます。

Error: [$injector:unpr] Unknown provider: Service1Provider <- Service1

これらの問題に対処する Web 上の記事を見つけることができません。私のアプリの構造は非常に標準的で OOTB であり、angular-seedと特に違いはありません(もちろん、サービスごとに個別のファイルを除いて)。

さらに情報が必要な場合はお知らせください。

4

1 に答える 1

2

私は現在@mticalで作業していますが、実際にエラーがkarma.conf.jsにあったことがわかりました。彼が言ったように、私たちはサービスを複数のファイルに分割し、メインのサービス ファイルは「service.js」と名付けました。デフォルトでは、karma は karma.conf.js ファイルに明示的にリストされていないすべての js ファイルを再帰的なアルファベット順にロードします。

これにより、「service.js」ファイルが、アルファベット順でそのファイルの前にリストされていた他のすべてのサービス ファイルの後にロードされていました。残念ながら、これらの他のすべてのサービスには依存関係として "service.js" があったため、テストを実行すると、必要なサービスを見つけることができませんでした。

解決策は、次のように、karma.conf.js ファイルに他のファイルを再帰的にロードする前に、「service.js」を明示的にリストすることでした。

...
files : [
      'app/lib/angular/angular.js',
      'app/lib/angular/angular-*.js',
      'test/lib/angular/angular-mocks.js',
      'app/js/services/services.js',
      'app/js/**/*.js',
      'test/unit/**/*.js'
    ],
...
于 2013-12-20T16:05:25.707 に答える