我刚刚将我的登录组件更改为更符合 Angular 的预期,但是我现在在此类测试中遇到了失败:
Cannot read property 'subscribe' of undefined
我通过使用 console.log 进行调试时发现的一个问题是,无论我向 onSubmit() 函数传递什么内容,它都会看到不应看到的有效表单。
仅供引用 - 登录表单在实践中确实表现正常且符合预期。只是测试很有趣。
最佳答案
首先要做的事情:
Cannot read property 'subscribe' of undefined
意味着您的服务不会返回 Observable。
解决它
spyOn(mockAuthService, 'login').and.callFake(() => of(null));
由于您的回调没有执行任何操作
(signature : this.authService.login(formUser, formPass).subscribe(() => {
),你不需要返回任何东西,所以 null
就可以了.
以下错误可能来自于此,因为您从未进入订阅回调,所以未设置变量。
第二件事:
function setCredentials(user: boolean, pass: boolean) {
component.loginForm = formBuilder.group({
username: user ? 'someUser' : '',
password: pass ? 'somePassword' : ''
});
}
您的表单没有验证器!这意味着无论您做什么,它始终有效。
关于javascript - 如何测试我的 Angular 登录表单是否完全覆盖?无法读取未定义的属性 'subscribe',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52476103/