我正在为我的服务创建单元测试:
private _element$: BehaviorSubject<string>;
element$: Observable<string>;
constructor() {
this.element$ = new BehaviorSubject<string>('test');
this.element$ = this._element$.asObservable();
}
测试是
let service;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [
],
});
service = new TestService();
});
it('should give next object',
async() =>{
expect(service._element$.getValue()).toEqual('test') -> works
service.element$.subscribe(element =>
expect(element.toEqual('test')
) -> fails
});
该可观察项失败,因为“未定义不是函数”。如果我进行调试,我可以看到它找不到“服务”。
我的错误在哪里?
答案 0 :(得分:0)
测试主体应该是async
函数的参数,并且有一些错别字:
it('should give next object',
async(() => {
expect(service.element$.getValue()).toEqual('test');
service.element$.subscribe(element =>
expect(element).toEqual('test')
);
}));
答案 1 :(得分:0)
尝试在.subscribe之前添加一个过滤器(来自rxjs)
service.element$
.pipe(filter(el => !!el ))
.subscribe(element =>
expect(element.toEqual('test');
)