正确测试简单组件的观察值

时间:2018-05-02 15:09:35

标签: angular testing jasmine rxjs

我目前正在测试一个我创建的简单组件,如下所示:

@Input()
public type: string;

private saveSubscription: Subscription;

public ngOnDestroy(): void {
    this.saveSubscription.unsubscribe();
}

public ngOnInit(): void {
    this.onSave();
}

private onSave(): void {
    this.saveSubscription = this.editService.saveSelection.subscribe(() => {
        this.editService.type.next(this.type);
    });
}

在我的测试中,我想确保如果我手动设置输入,然后调用ngOnInit()editService发出的值将等于我的值。

it('should set up the subscription for saving', fakeAsync(() => {
    // Arrange
    component.type = 'full';

    // Act
    component.ngOnInit();
    fixture.detectChanges();

    mockedEditService.saveSelection.next();

    // Assert
    mockedEditService.type.subscribe(type => {
        expect(type).toEqual(component.type);
    });
}));

我正在努力测试异步代码并且不确定我是否正确地执行此操作。即使测试用例不正确,测试总是通过,我怀疑有问题的代码在进行断言之前没有等待订阅解析。

阅读Angular test docs,我已经能够熟悉自己了,但我想知道你们是否有任何建议。

由于

1 个答案:

答案 0 :(得分:2)

create-react-app中,spec

前面有subscription
mockedEditService.saveSelection.next