$resource
を使用するAngularJSサービスの単体テストを試みています。それを分離して保つために、$resource
のquery()
メソッドでJasmineのspyOnとスパイを使用したいと思います。私のコントローラでは、短い形式のquery()
を使用して、$promise.then(success, error)
を呼び出すことなく、成功とエラー関数を直接クエリメソッドに渡したいと考えています。これが可能ですか、または長い形式のquery().$promise.then(success, error)
についていますか?ここで
は、私は私の問題を説明する失敗テストで作成したplunkerです:http://plnkr.co/edit/hVc2YNnwUDNv7IHODOMD?p=preview
私はSOの問題を解決するために主張しますが、すべては私が使用している部品の多くの古いバージョンを使用している上のいくつかの質問を発見しました。プランナーからAngular 1.5.2、Jasmine 2.4.1で作業しているのが分かります。
関連する質問として、多くのチュートリアルでは、コントローラに返り値query()
を配列に割り当て、データがロードされると配列が更新されることを示しています。これは最もクリーンなソリューションですが、エラーが発生した場合はどうなりますか?私は、データの読み込みに問題がある場合は、いくつかのデフォルトのエラー通知か何も起こっていない状態に終わることが予想されます。インターセプタを介して他の場所でエラーを処理し、イベントを発生させ、一般的な非コントローラ固有の方法でユーザーに通知するのがベストプラクティスですか?私は、インターセプタは、いくつかの文脈を与えるためにユーザに表示するメッセージを決定する何らかの方法を必要とすると考えています。たとえば、「Bagelsの読み込みは通常より長くかかるようですが、ここをクリックして再試行します。ステータスコード '