ngAfterViewInit 的单元测试?

Ram*_*ula 6 unit-testing angular

我是为 angular 编写单元测试用例的新手。我必须为ngAfterViewInit编写一个测试用例。我不知道如何开始。我正在使用角度 7。

我的组件代码:

export class MyAccessComponent implements OnInit, AfterViewInit {

    // Spinner
    pageLoaded: boolean;
    @Input() diameter = 64;
    @Input() strokeWidth = 7;

    // Icons
    faEdit = faEdit;

    dataSource;
    @ViewChild(MatPaginator) paginator: MatPaginator;

    constructor(private router: Router, private userService: UserService) { }

    ngOnInit() {
        this.pageLoaded = false;
        // Data table init
        this.getUsers();
    }

    ngAfterViewInit() {
        setTimeout(() => {
            this.pageLoaded = true;
        }, 500);
    }
}
Run Code Online (Sandbox Code Playgroud)

Mas*_*tto 11

您可以使用组件实例以编程方式调用生命周期挂钩,例如:

beforeEach(() => {
  fixture = TestBed.createComponent(MyAccessComponent);
  component = fixture.componentInstance;
  fixture.detectChanges();
});

it('should set pageLoaded after view init', () => {
  component.ngAfterViewInit();
  expect(component.pageLoaded).toBe(true);
});
Run Code Online (Sandbox Code Playgroud)

请记住,由于您在钩子中使用了超时,因此您需要使用fakeAsync来正确测试