如何测试我的 Angular 登录表单是否完全覆盖?无法读取未定义的属性'subscribe'



我刚刚将我的登录组件更改为更符合 Angular 的意图,但是我现在在此类测试中遇到了失败:

无法读取未定义的属性"订阅">

我通过使用控制台调试发现的一个问题是.log无论我传递给我的 onSubmit(( 函数什么,它都会看到一个有效的表单,而它不应该。

仅供参考 - 登录表单在实践中确实表现正常且符合预期。只是测试很有趣。

首先要做的是:

无法读取未定义的属性"订阅">

表示您的服务不返回可观察量。

用 解决它

spyOn(mockAuthService, 'login').and.callFake(() => of(null));

由于您的回调什么都不
做(签名:this.authService.login(formUser, formPass).subscribe(() => {(,因此您无需返回任何内容,因此null就可以了。

后面的错误可能来自此,因为您永远不会进入订阅回调,因此不会设置变量。

第二件事:

function setCredentials(user: boolean, pass: boolean) {
component.loginForm = formBuilder.group({
username: user ? 'someUser' : '',
password: pass ? 'somePassword' : ''
});
}

您的表单没有验证器!这意味着无论您做什么,它始终有效。

最新更新