代码之家  ›  专栏  ›  技术社区  ›  J-man

如何从ngif路由器检查元素是否可见。url使用角度6中的茉莉花检查

  •  0
  • J-man  · 技术社区  · 6 年前

    我有一个DIV,只有当当前的路由是一个特定的页面时,我才想显示它,否则其他时候都隐藏它,我正试图为此编写一个Jasmine单元测试。

    HTML标记:

    <div class="header" *ngIf="router.url ='/home'">
    

    茉莉花单元试验:

    describe('MyComponent', () => {
        let component: MyComponent;
        let fixture: ComponentFixture<MyComponent>;
        let el: DebugElement;
    
        beforeEach(() => {
            fixture = TestBed.createComponent(MyComponent);
            component = fixture.componentInstance;
            el = fixture.debugElement;
            fixture.detectChanges();
        });
    
        it('should display div when on the home page', () => {
            expect(el.query(By.css('.header')).nativeElement.style.visibility).toBe(true);
        });
    
        it('should hide div when not on home page', () => {
            expect(el.query(By.css('.header')).nativeElement.style.visibility).toBe(false);
        });
    });
    

    注意:应用程序加载路由时的第一页将是/home。

    谢谢!

    1 回复  |  直到 6 年前
        1
  •  1
  •   Maryannah    6 年前

    在每次测试时重新写入路由器的URL值。因为它是只读属性,请考虑使用 Object.defineProperty :

    it('should display div when on the home page', () => {
      Object.defineProperty(component.router, 'url', { writable: true, value: '/home'});
      expect(el.query(By.css('.header')).nativeElement.style.visibility).toBe(true);
    });
    
    it('should hide div when not on home page', () => {
      Object.defineProperty(component.router, 'url', { writable: true, value: '/not-home'});
      expect(el.query(By.css('.header')).nativeElement.style.visibility).toBe(false);
    });