我正在尝试测试一个在执行时将状态更改为停用按钮的功能。但是,我无法检测到这些更改,我可以在调用函数之前或在解析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();
});
});
但是期望变得虚伪是假的。我在这里做错了什么?