定数サービスを変更する必要があります。このサービスにはテストは付属していませんが、私はJasmineで書いてくれる単体テストでファイルと修正を少なくとも部分的にカバーしたかったのです。これは、ルートの解決プロセス(私たちはui-routerを使用)で使用されている
(function() {
angular
.module('app')
.constant('myService', myService);
function myService() {
dependencyOne: dependencyOneImpl,
someFunction: someFunctionImpl
...
}
dependencyOneImpl.$inject = ['someDependency'];
function dependencyOneImpl(someDependency) {
...
}
someFunctionImpl.$inject = ['dependencyOne', 'dependencyTwo'];
function someFunctionImpl(dependencyOne, dependencyTwo) {
...
}
})();
:よう
サービスが見えます。特定のルートがアクティブになると、サービスの機能が呼び出されます:
someRoute = {
url: '...',
name: '...'
views: { ... },
resolve: { resolver.someFunction }
}
は、サービスの構築に必要な依存関係はありません、と私は、公共の機能のいずれかをテストしようとしているそのサービスが公開。私は手動機能により必要な依存関係を解決することができ
prepareSomeSetup();
theService.someFunction();
assertSomething();
が、私は、UI-ルータがきているのと同じ動作を得ることができれば私が知りたいのですが:
は、一般的に私のようなテストを記述しますその機能を解決する。依存関係が解決され、関数が実行されているように見えます。
テストファイルに$ injectorサービスを注入して手動で関数呼び出しを呼び出す必要があったのですが、動作していないようです。
どのように2つの依存関係が解決された関数を呼び出すことができますか?あなたは注射用関数を定義するとき
$ inject、配列表記、または単純ではないマイナーな表記を使用しても、サービスのインスタンスの取得方法は変わりません。 inject(constantsService)を使用すると、angleはサービスの依存関係を作成してサービス自体に挿入し、その関数にサービスを注入します。何がうまくいかない、正確には? –
ありがとう@JBNizet!、多分私は全体を間違って公開しました。この場合、関数となるSUTを実行したいとき、すべての依存関係は未定義です(パラメータを指定していないため)。私は質問を更新しましょう。 – IoChaos
私はあなたの質問を理解していません。サービスの実際の完全なコードとテストの実際の完全なコードとエラーをなぜ投稿しないのですか?私が言ったように、依存関係は**解決すべきです**。 –