根据此网站How To Debug RxJs - A Simple Way For Debugging Rxjs Observables的信息,我制作了一个名为observable-debug-operator.ts
的新文件,我在我的应用组件中导入了import './observable-debug-operator';
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>;
}
}
这是按预期工作的,我可以订阅一个observable并使用
将其调试到控制台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 :(得分:0)
错误并不意味着您的undefined
未定义。它表示您的服务方法或Observable.prototype是do
。因此,请检查它们是否都可用。