1

Karma(Testacular) と Jasmine を角度で使用して単体テストを作成するときにプロバイダーを注入する方法はありますか?

私たちのチームは最近、angularjs $log を使用してデバッグの詳細をコンソールに書き込むことにしました。$logProvider.debugEnabled()このようにして、メソッドを介してロギングを無効にする機能を活用できます。

angular.module("App", ["prismLogin", "ui.bootstrap"])
    .config(["$routeProvider", "$logProvider", 
     function ($routeProvider, $logProvider) {
         $routeProvider
         //routes here edited for brevity

         //This is the offending line, it breaks several pre-existing tests
         $logProvider.debugEnabled(true);
     }]);

ただし、行を追加した後、$logProvider.debugEnabled(true);いくつかのテストが正常に実行されなくなり、次のメッセージで失敗します。

TypeError: Object doesn't support property or method 'debugEnabled' from App

もう一度私の質問ですが、をモックすることは可能$logProviderですか? または、テスト ハーネス用に独自の構成ブロックを提供する必要がありますか?

アプリモジュールをモックする方法を探してみましたが、うまくいきませんでした。モックの代わりに具体的なアプリ モジュールを使用するのは非常に脆いように思えます。アプリまたは実行構成ブロックで変更が行われるたびに、アプリ モジュールに関連付けられたテストをやり直すことは避けたいと思います。

$logProvider失敗しているテストは、 ?とは関係のないコードの単位です。ここで何かが欠けていて、物事を本来よりもずっと難しくしているように感じます。柔軟で、アプリケーションに導入された他の副作用の影響を受けないテストを作成するにはどうすればよいでしょうか?

4

1 に答える 1