函数调用和promise之间的Angular 2单元测试代码

时间:2017-06-19 12:30:47

标签: javascript angular unit-testing

我正在尝试测试一个在执行时将状态更改为停用按钮的功能。但是,我无法检测到这些更改,我可以在调用函数之前或在解析promise之后获取值,但不是在这两个ocasions之间获取值。

这是登录功能:

onSubmit({ value, valid }: { value: Login, valid: boolean }) {
    if (valid) {
        this.isSubmiting = true;

        this.loginService.apiPost('signin', value).subscribe((response) => {
            this.isSubmiting = false;

            if ( response.success ) {
                this.router.navigate(['/home']);
            }
        }, (error) => {
            this.isSubmiting = false;
        })
    }
}

这就是我试图测试它的方式:

it('should show status "submitting" when button is clicked and form is valid', () => {
    spyOn(component, 'onSubmit');
    fixture.detectChanges();

    button.click();
    expect(component.isSubmiting).toBeFalsy();

    component.loginForm.controls['email'].setValue(formEmail);
    component.loginForm.controls['password'].setValue(formPassword);
    fixture.detectChanges();

    button.click();
    expect(component.isSubmiting).toBeTruthy();

    fixture.whenStable().then(() => {
        expect(component.isSubmiting).toBeFalsy();
    });
});

但是期望变得虚伪是假的。我在这里做错了什么?

0 个答案:

没有答案