2017-07-12 84 views
0

基於從本網站How To Debug RxJs - A Simple Way For Debugging Rxjs Observables我做了一個新的文件名爲observable-debug-operator.ts我導入我的應用程序組件與import './observable-debug-operator';角添加新觀察到的操作

可觀察到的調試,操作文件的內容的信息,下面

import { Observable } from 'rxjs/Observable'; 
import 'rxjs/add/operator/do'; 

import { environment } from '../environments/environment'; 

// add debugging to Observables 
Observable.prototype.debug = function (message: string) { 
    return this.do(
    function (next) { 
     if (environment.observableDebugging) { 
     console.log(message, next); 
     } 
    }, 
    function (err) { 
     if (environment.observableDebugging) { 
     console.error('ERROR >>> ', message , err); 
     } 
    }, 
    function() { 
     if (environment.observableDebugging) { 
     console.log('Completed.', message); 
     } 
    } 
); 
}; 
declare module 'rxjs/Observable' { 
    interface Observable<T> { 
    debug: (...any) => Observable<T>; 
    } 
} 

這是按預期工作,我可以訂閱一個可觀察和調試它的控制檯

this.service.methodThatReturnsObservable() 
    .debug('doing something with an observable') 
    .subscribe(...do something...); 

但是當我跑我的人緣測試中,我得到的錯誤

TypeError: Cannot read property 'debug' of undefined 

Failed: Uncaught (in promise): TypeError: Cannot read property 'debug' of undefined 
TypeError: Cannot read property 'debug' of undefined 

我想包括在我的測試規範import 'the/path/to/observable-debug-operator';但我仍然得到錯誤。有誰知道爲什麼在測試中找不到調試運算符,但在實際代碼中工作正常嗎?

+0

錯誤並沒有說你的調試運算符是未定義的,它更多關於'Observable.prototype'或'this.service.methodThatReturnsObservable'是未定義的。 – cyrix

+0

@cyrix絕對正確。我不知道爲什麼我誤解了這個錯誤。我嘲笑了服務,所以我需要從模擬的方法中返回一個可觀察的事物。現在它工作正常。如果你讓它成爲答案,我會接受它 –

回答

0

錯誤並不意味着您的debug未定義。它表示無論您的服務方法或Observable.prototype是undefined。所以檢查它們是否都可用。