2016-03-22 24 views
0

Ben console.log ve sürekli bir ortama bağlı olarak diğerlerini üzerine yazar bir Eğik günlüğü servisi, basitleştirilmiş örnek ettik:Açısal test hizmeti

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

Benim soru can nasıl Jasmine ile test ediyorum, bu boş fonksiyonun üzerine yazarak konsol.log'un hizmetimin üzerine yazılıyor. Sabitimle alay ettim ve hizmetimi enjekte ettim, ancak Jasmine ile konsolun üzerine yazılıp yazılmadığını nasıl test edeceğimi gerçekten anlayamıyorum.

cevap

0

Ben $ penceresini alay ve sonra benim hizmetinde $ pencereyi üzerine yerine aşağıdaki gibi doğrudan konsolu [ne olursa olsun] üzerine yazarak bu çözdük:

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

Bu gibi benim hizmetine bu enjekte:

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

Sonra Hizmetimde aşağıdaki yapabileceğini:

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

bir d son olarak, $ window penceresinin enjekte edilen alayının 'etkin' veya 'devre dışı bırakılmış' olarak ne döndürdüğünü kontrol ederek her şeyin gerçekleşip gerçekleşmediğini kontrol edebilirim.

expect(_window.console.log()).toEqual('disabled'); 
İlgili konular