我刚刚将我的登录组件更改为更符合 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' : ''
});
}
您的表单没有验证器!这意味着无论您做什么,它始终有效。