Jasmine を使用した AngularJS のテストに関する非常に多くの投稿を読んだ後、自分のサービスの構築方法はテスト可能なものではないという結論に達しました。
それでも、私は AngularJS の初心者であり、それを行うためのより良い方法を実際に把握することはできません。同僚の何人かは、ネストされたメソッドをテストできると言っていますが、そうではないようです。
だから、ここに状況があります:
Restfull Web サービスに対して GET を実行し、オブジェクトを返すサービスがあります。
次のようになります。
.factory('MyService', function( $resource, config, $q ) {
return config.get("RestServiceBaseUrl").then(function(baseUrl) {
return $resource(baseUrl+"params_necessary_to_my_rest_call")
})
})
これはサービスでもあり、物理的な構成ファイルにあるものは何でも返します。この場合は、RestServiceBaseUrl JSon 変数の下に格納されている URL です。とにかく、ここに私の注入された設定オブジェクトの取得部分があります:
function get(sKey) {
var deferred = $q.defer()
ConfigGet(sKey, function (resp) {
deferred.resolve(resp['result'])
})
return deferred.promise
}
ご覧のとおり、ネストされた戻り値が必要です。1 つは config.get メソッド用で、サービスから取得されます。もう 1 つは GET からの戻り値で、これも $resource に依存し、私のサービスにも注入されます。その $resource は angular-resources から来ています。それを上書きするために何も行われていません。
私の単体テストでは、テストを達成するために非常に多くの方法を試しましたが、構成の問題を通過すると$resourceの問題が発生し、問題が発生したときに正しく実行できないように見えるため、イライラします挿入されたサービスを使用してサービスをテストします。
Plunker での私のコードは次のとおりです: http://plnkr.co/edit/RSFTKq
ご覧のとおり、サービスからの戻り値をテストしようとしています。
私はすでに4日間このことをしています!私は絶望しています!どんな助けでも大歓迎です!
私の英語の間違いを許してください。
よろしく