2016-03-22 15 views
0

私は一定の環境によってはconsole.logなどを上書き角度ログサービス、簡略化した例ました:だから私の質問はどのようにすることができますです角度テストサービス(ジャスミン)

if(!DEBUG_ENV) { 
    console.log = function(){}; 
} 

を私はJasmineでconsole.logが実際に私のサービスによってこの空の関数に上書きされていることをテストします。私は私の定数を嘲笑して私のサービスを注入しましたが、console.logがJasmineで上書きされているかどうかを実際にテストする方法は分かりません。

答えて

0

私は$ウィンドウをモックアップして、私のサービスで$ウィンドウを上書きする代わりに、次のように直接コンソール[どんな]を上書きすることによって、これを解決してきました:

$provide.value('$window', { 
    console: { 
     log: function(){return 'enabled'}; 
    } 
}); 
その後

私はこのように私のサービスにこれを注射さ:

inject(['$window', function($window) { 
    _window = $window; 
}]); 

その後、私のサービスでは、私は次の操作を行うことができます:

if(!DEBUG_ENV) { 
    $window.console.log = function(){return 'disabled'}; 
} 

アン最後に、$ windowの私の注入されたモックが '有効'または '無効'のいずれかを返したかを調べることによって、すべてが意図どおりに起こったかどうかを確認できました。

expect(_window.console.log()).toEqual('disabled');