簡體   English   中英

angular 中 router.events.subscribe 的單元測試

[英]unit test for router.events.subscribe in angular

我訂閱 router.events 來設置變量的值。 在我的名為 getLastUpdatedTime 的服務中使用。 我想為此編寫單元測試。 我的服務返回 object。

  lastUpdatedSubcription: Subscription;
  hours: string;
  days: string;

  constructor(
    public router: Router,
    public activatedRoute: ActivatedRoute,
    public utilService: UtilService) {
      this.routerEvent();
  }

 /**
  * @description Update the last updated hours in footer
  */
  routerEvent() {
    this.router.events.subscribe(event => {
      let page: string;
      if (event instanceof NavigationEnd) {
        if (event.urlAfterRedirects === '/account/region/detail' || event.urlAfterRedirects === '/account/currency/detail') {
          page = 'accountDetail';
        } else {
          page = 'account';
        }
        this.lastUpdatedSubcription = this.utilService.getLastUpdatedTime(url.getLastUpdatedTime, page)
          .subscribe((lastUpdatedTime: LastUpdatedTime) => {
            this.hours = lastUpdatedTime.hours;
            this.days = lastUpdatedTime.days;
          });
      }
    });
  }```
import { CommonModule } from '@angular/common';
import { HttpClientModule } from '@angular/common/http';
import { RouterTestingModule } from '@angular/router/testing';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';

import { SharedModule } from 'src/app/shared/shared.module';
import { NavigationEnd, Router } from '@angular/router';
import { UtilService } from 'src/app/shared/services';
import { of, Observable } from 'rxjs';
import { ConsoleReporter } from 'jasmine';

fdescribe('NxAccountComponent', () => {
  let component: NxAccountComponent;
  let fixture: ComponentFixture<NxAccountComponent>;
  let util: UtilService;

  class MockRouter {
    public ne = new NavigationEnd(0, 'account/region/detail', '/account/region/detail');
    public events = new Observable(observer => {
      console.log('in class ob');
      observer.next(this.ne);
      observer.complete();
    });
  }


  beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [NxAccountComponent],
      imports: [
        HttpClientModule,
        CommonModule,
        SharedModule,
        BrowserAnimationsModule,
        RouterTestingModule,
        NxAccountRoutingModule
      ],
      providers: [NxAccountService, UtilService,
        { provide: RouterTestingModule, useClass: MockRouter}]
    })
      .compileComponents();
  }));

  beforeEach(() => {
    fixture = TestBed.createComponent(NxAccountComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
    util = TestBed.get(UtilService);
  });

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

  it('test', () => {
    const mockData = {
      hours: '1',
      days: '2'
    };
    spyOn(util, 'getLastUpdatedTime').and.returnValue(of(mockData));
    component.routerEvent();
    expect(component.hours).toEqual(mockData.hours);
  });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM