Angular 返回了可观察的角度单元测试

Angular 返回了可观察的角度单元测试,angular,unit-testing,jasmine,observable,karma-runner,Angular,Unit Testing,Jasmine,Observable,Karma Runner,如何编写测试以确保调用了可观察对象 示例:obj:any={func:()=>this.obs$} 我想编写一个测试,确保obj.func返回这个.obs$ 我尝试了以下方法: it('should demonstrate obs is returned', () => { const spy = spyOn<any>(component, 'obs$').and.returnValue(of('test')); const ret = component.o

如何编写测试以确保调用了可观察对象

示例:
obj:any={func:()=>this.obs$}

我想编写一个测试,确保obj.func返回这个.obs$

我尝试了以下方法:

it('should demonstrate obs is returned', () => {
    const spy = spyOn<any>(component, 'obs$').and.returnValue(of('test'));

    const ret = component.obj.func();

      expect(spy).toHaveBeenCalled();

// 2nd attempt

expect(ret).toEqual('test');
 })
it('应证明obs已返回',()=>{
const spy=spyOn(组件'obs$')。和.returnValue(of('test'));
const ret=component.obj.func();
期望(间谍)。已被调用();
//第二次尝试
expect(ret).toEqual(“测试”);
})

这两个都不起作用。任何帮助都将不胜感激。

你不能假设spyOn是一个可观察的而不是一个函数。你只能监视函数

尝试:


我想用一个单独的答案来回答,虽然AliF50的答案有效,谢谢你的帮助,但他们对间谍的说法是不正确的。它还与间谍合作,意思是:

it('should demonstrate obs is returned', (done) => { // add done callback here
  spyOn<any>(component, 'obs$').and.returnValue(of('test'));
  const ret = component.obj.func();
  ret.subscribe(value => { 
    expect(value).toEqual('test');
    done();
  });
});
我的错误是试图这样做:

component.obs$ = of('test'); 

expect(component.obj.func()).toEqual(of(test));

//or

expect(component.obj.func()).toEqual('test');
两者都不起作用


希望这对其他人有所帮助。

谢谢您的帮助,请查看我的答案,以便进行小的更正
it('should demonstrate obs is returned', () => {
    expect(component.obj.func()).toEqual(component.obs$);
 })
component.obs$ = of('test'); 

expect(component.obj.func()).toEqual(of(test));

//or

expect(component.obj.func()).toEqual('test');