繁体   English   中英

使用 karma 和 jasmine 以 .find 方法覆盖数组的单元测试

[英]Covering unit test for array with .find method in angular using karma and jasmine

无法在 angular 8 中使用 karma 和 jasmine 在规范文件中覆盖以下代码段

myMethod(id: number): boolean {
  const data= this.myService.getSampleData();
  return data.find(item => item.id === id).count;
}

规格:

it('should call myMethod ', () => {
    spyOn(myService,'getSampleData').and.returnValue(of([{id:1,count:10}]))
    component.myMethod(1);
});

它抛出无法读取未定义的属性 .find。 虽然我试过 spyOn(myService,'getSampleData').and.returnValue(of([{id:1,count:10}])) 进入 beforeEach 函数,但没有运气

您的方法期望获得一组项目。 但是你从你的间谍那里返回 Observable < Array< Item>> 。 试试这个spyOn(myService,'getSampleData').and.returnValue([{id:1,count:10}])

第一个问题是,你正在使用返回一个可观察of ,当服务似乎返回项目的数组。

其次,您没有做任何期望来验证测试中的某些内容。

我会这样做:

it('should call myMethod ', () => {
    spyOn(myService,'getSampleData').and.returnValue([{id:1, count:10}]);
    expect(component.myMethod(1)).toEqual(true);
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM