我正在尝试通过NgForm发送用户名和密码输入来测试是否可以成功登录,但是我似乎无法成功通过...我缺少什么?
我当前收到错误消息:
Chrome 67.0.3396 (Mac OS X 10.13.5) LoginComponent should call auth.login when passed a valid form with correct credentials onSubmit FAILED
Expected spy login to have been called.
at UserContext.<anonymous> src/app/components/login/login.component.spec.ts:87:26)
at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke node_modules/zone.js/dist/zone.js:388:1)
at ProxyZoneSpec.push../node_modules/zone.js/dist/zone-testing.js.ProxyZoneSpec.onInvoke node_modules/zone.js/dist/zone-testing.js:288:1)
at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke node_modules/zone.js/dist/zone.js:387:1)
答案 0 :(得分:0)
在@trichetriche的帮助下,我遇到的解决方案是需要退还我的spyOn
。
我还需要将valid: true
选项添加到要通过的NgForm json中:
const validFormGoodCreds = <NgForm>{
valid: true,
value: {
username: "someUsername",
password: "somePassword"
}
};
由于我不关心当前返回的内容,只想关注函数是否被调用,因此我选择了更改行的解决方案:
authLoginSpy = spyOn(component['authService'], 'login');
到
authLoginSpy = spyOn(component['authService'], 'login').and.callThrough();
然后可以看到该函数应完全运行,因此将调用login()
。