程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了类型错误:无法读取未定义的属性“管道”(茉莉花,角度)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决类型错误:无法读取未定义的属性“管道”(茉莉花,角度)?

开发过程中遇到类型错误:无法读取未定义的属性“管道”(茉莉花,角度)的问题如何解决?下面主要结合日常开发的经验,给出你关于类型错误:无法读取未定义的属性“管道”(茉莉花,角度)的解决方法建议,希望对你解决类型错误:无法读取未定义的属性“管道”(茉莉花,角度)有所启发或帮助;

我有一个关于 Angular 单元测试的错误。错误是类型错误:无法读取未定义的属性“管道”。为此,我使用了一个 observable 并尝试测试订阅的输出。我将不胜感激任何帮助!谢谢!

  obs1$: Observable<number>;
  pos=12345;

  constructor(
    private service1: servicE) {
  }

  ngOnInit() {

    this.obs1$ = this.service1.retrIEveData1(this.pos)
      .pipe(
        map(item => item.value || null))

  }
 let component: Componentname;
  let fixture: ComponentFixture<Componentname>;

  const serviceSpy = jasmine.createSpyObj('service',['retrIEveData1']);

  beforeEach(async(() => {
    TESTBed.configureTesTingModule({
      declarations: [Componentname],provIDers: [{ provIDe:service,useValue: {} }
    })
      .overrIDeComponent(Componentname,{
        set: {
          provIDers: [
            { provIDe: Componentname,useValue: serviceSpy }
          ]
        }
      })
      .compileComponents();
  }));

  beforeEach(() => {
    fixture = TESTBed.createComponent(ComponentName);
    component = fixture.componenTinstance;
  });
 
 fit('should retrIEve value',done => {
    component.pos = 12345;
    fixture.detectChanges();
    component.obs1$.subscribe(value => {
      expect(value).toEqual(1);
      done();
    })
  })
<div *ngIf="obs1$ | async as obs">
    <div [ngSwitch]="obs" class="col-2 p-0">
      <div *ngSwitchCase="0">
         <p>red</p>
       </div>
     </div>
 </div>

解决方法

你必须在 serviceSpy.retrieveData1 上返回一个 observable。 Simpelst 案例创建一个类似 serviceSpy.retrieveData1 = of({value: []}) 的内容并提供您的数据。 因为现在模拟返回未定义,而您的组件期望可观察对象在其上使用函数“管道”。这是不可能的

,

在创建 spy 之后,您还需要返回一个虚拟/模拟 observable 值。

代码需要一个 Observable,因此您可以尝试以下方法(在每个 it 块中,您可以添加此调用服务)

serviceSpy.retrieveData1.and.returnValue(of('mock value as requires'))

或者你可以像这样模拟服务

let serviceSpy= jasmine.createSpyObj('service',{
    'retrieveData1': of('mock data'),'other': 'some val'
});

大佬总结

以上是大佬教程为你收集整理的类型错误:无法读取未定义的属性“管道”(茉莉花,角度)全部内容,希望文章能够帮你解决类型错误:无法读取未定义的属性“管道”(茉莉花,角度)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: