Угловое тестирование

shock-me спросил: 11 июня 2018 в 11:06 в: angular

У меня есть служба с двумя свойствами:

Сервис

...
public usernameAnnounced;
private username: Subject<string> = new Subject<string>();constructor() {
    super();
    this.usernameAnnounced = this.username.asObservable();
}

В моем компоненте я хочу подписаться на свойство:

Компонент

    public ngOnInit(): void {
    this.service.usernameAnnounced.subscribe((username: string) => {
        this.username = NavbarComponent.capitalizeFirstLetter(username);
    });
}

Я выбрал имя пользователя на другом компе. но это не имеет значения для этого вопроса. Теперь я хочу издеваться над usernameAnnounced, но у меня с этим возникают трудности. Я пробовал его с помощью spyOn, и он меня выбрал: "usernameAnnounced не является функцией." С spyOnProperties он меня бросает: свойство "не является получателем".

Протестированный comp.

Пока мой подход выглядит следующим образом:

    beforeEach(async(() => {
    TestBed.configureTestingModule({
        ...
        declarations: [NavbarComponent],
        providers: [
            ...,
            {provide: service, useValue: authenticationMock}
            ]
        })
        .compileComponents();    fixture = TestBed.createComponent(NavbarComponent);
}));
...
    it('should render username',() => {
    const underTest = fixture.componentInstance;    spyOnProperty(authenticationMock, 'usernameAnnounced').and.returnValue({
            subscribe: () => {'boboUser'}}); <== important part here    underTest.ngOnInit();
    fixture.detectChanges();    const compiled: HTMLElement = fixture.debugElement.nativeElement.querySelector('#userName');
    const rendered: string = compiled.textContent;    expect(rendered).toMatch(`Logged in as: ${underTest.username}`);
});

Есть ли у кого-нибудь подсказки?


0 ответов