4

簡単な (一見) 質問 - $resource が実際にそのようにインスタンス化されていることを確認するために、AngularJS コントローラーで簡単な健全性チェックを実行しようとしています。それは大きなアプリですが、例えば:

.factory('AccountSearchService_XHR', ["$resource", function($resource) {
  var baseUrl = "http://localhost\\:8081/api/:version/accounts/:accountNumber";
  return $resource(baseUrl,
              {
                version: "@version",
                accountNumber: "@accountNumber"
              },
              {
                get: {method: 'GET', isArray: false}
              });
}]);

その後、コントローラーで:

$scope.accountObj.currentAccount = AccountSearchService_XHR.get({
                                    version:        "v1",
                                    accountNumber:  "1234"
                                  },
                                  function(result) {... etc etc});

$scope.accountObj.currentAccount私のAPIへの呼び出しは正常に機能し、すべてが期待どおりのデータを返します-しかし、呼び出しを行う前にリソースであるかどうかをテストしたいと思い.getます(非常に重要な大文字の「R」に注意してください)。

$scope.accountObj.currentAccountクロム デバッガーでオブジェクトを検査すると、次のようになります。

Resource {accountHolderName: Object, socialSecurityNumer: null, birthDate: "05/14/1965", maritalStatus: ...}

ただし、セットアップが複雑なため、通常のオブジェクトとして上書きされることがありますが ( typeofreturn "object")、デバッガーで検査すると、Resourceステータスが失われていることが確認されます。

だから - それが $resource であるかどうかをテストする方法を知っている人はいますか? ほぼtypeof $scope.accountObj.currentAccountリターンのような"Resource"?それとも、物事がすべて適切で立派に接続されていることを確認するためのより良いベストプラクティスの方法でしょうか?

検索時に見たすべての SO 記事は、実際の Jasmine テストを中心に展開しています。

前もって感謝します。

4

3 に答える 3

0

@tengen $resource の代わりに、チェックしたいタイプを注入する必要があります。

すべてのリソースは「クラス」「リソース」のインスタンスですが、これは $resource サービスのファクトリ メソッド内で定義された関数であるため、instanceof 演算子で使用する外部の可視性はありません。

ただし、その $resource の作成を独自のカスタム タイプ AccountSearchService_XHR でラップしているため、それに対してチェックを行う必要があります。

コードに AccountSearchService_XHR を挿入してから、AccountSearchService_XHR の myRef インスタンスを実行する必要があります。これは === true になります。

于 2014-08-18T14:26:17.047 に答える