Angular 如何测试服务中的可观测数据

Angular 如何测试服务中的可观测数据,angular,angular5,angular-test,Angular,Angular5,Angular Test,我正在为我的服务创建单元测试: private _element$: BehaviorSubject<string>; element$: Observable<string>; constructor() { this.element$ = new BehaviorSubject<string>('test'); this.element$ = this._element$.asObservable(); } 由于“未定义不是函数”,可观察对

我正在为我的服务创建单元测试:

private _element$: BehaviorSubject<string>;

element$: Observable<string>;

constructor() {

  this.element$ = new BehaviorSubject<string>('test');
  this.element$ = this._element$.asObservable();
}
由于“未定义不是函数”,可观察对象失败。如果我调试,我可以看到它找不到“服务”


我的错在哪里

测试主体应该是
async
函数的参数,并且有一些输入错误:

it('should give next object',
   async(() => {
     expect(service.element$.getValue()).toEqual('test');
     service.element$.subscribe(element =>
          expect(element).toEqual('test')
     );
 }));
尝试在之前添加筛选器(来自rxjs)。订阅

service.element$
.pipe(filter(el => !!el ))
.subscribe(element =>
    expect(element.toEqual('test');
) 

在何处以及如何实例化服务?它不是从空中传来的。谢谢,但是我得到了同样的错误“undefined不是一个函数”,可能是因为它是一个字符串吗?在哪一行<代码>期望(元素).toEqual('test')在这里?你有正确的进口吗?
service.element$
.pipe(filter(el => !!el ))
.subscribe(element =>
    expect(element.toEqual('test');
)