微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从Jasmine单元测试的ActivatedRoute数据断言Observable

如何解决如何从Jasmine单元测试的ActivatedRoute数据断言Observable

如何断言从activateRoute.data返回的Observable实际上是从route.data调用一个Observable,并且在类上将其设置为Observable而非静态值?

    describe('AssetListContainerComponent (SHALLOW TEST)',() => {
  
     let component: AssetListContainerComponent;
     let fixture: ComponentFixture<AssetListContainerComponent>;
     let mockActivatedRoute;
     let mockPage;

    beforeEach(() => {
    
    Testbed.configureTestingModule({
      declarations: [AssetListContainerComponent],schemas: [NO_ERRORS_SCHEMA],providers: [
        {
          provide: ActivatedRoute,useValue: mockActivatedRoute
        }
      ]
    });

    fixture = Testbed.createComponent(AssetListContainerComponent);
    component = fixture.componentInstance;
    });


    beforeEach(() => {
    const mockAsset = {
      id: 'id',type: 'type',value: 'value'
    } as Asset;

    mockPage = {
      count: 11,next: 'http//next',prevIoUs: 'http://prevIoUs',size: '111',current: '41',results: [mockAsset]
    };

    mockActivatedRoute = { data: hot('-a-',{a: mockPage}) };

    });

     it('should create',() => {
      expect(component).toBeTruthy();
    });

    it('should assign page object from resolver route',fakeAsync(() => {

    fixture.detectChanges();

    const expected = cold('-a-',{a: mockPage});

    expect(component.page$).toBeObservable(expected);

    }));
   });


    it('should assign page object from resolver route',{a: mockPage});

    expect(component.page$).toBeObservable(expected);

    }));
   });
export class AssetListContainerComponent implements OnInit {

  page$: Observable<Dag<Plasset>>;

  constructor(private route: ActivatedRoute) {}

  ngOnInit(): void {

    this.page$ = this.route.data.pipe(
      map(res => {
        return res['data'];
      })
    );
  }

}

这发生在ngOnInit()生命周期中。当然这是一个常见的业务逻辑案例,但是我找不到任何不包含“ subscribe()`

的示例。

我是Angular单元测试的新手:)这很难。.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。