【发布时间】:2017-12-17 06:31:32
【问题描述】:
根据来自该站点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';,但我仍然收到错误消息。有谁知道为什么在测试中没有找到调试操作符但在实际代码中工作正常?
【问题讨论】:
-
这个错误并不是说你的调试操作符是未定义的,更多的是关于
Observable.prototype或this.service.methodThatReturnsObservable是未定义的。 -
@cyrix 绝对正确。我不知道为什么我误读了那个错误。我已经模拟了服务,所以我需要从模拟的方法中返回一个 observable。现在它工作正常。如果你把它作为一个答案,我会接受它
标签: angular rxjs karma-jasmine observable