无法使用Angular2 +成功测试我的NgForm调用

时间:2018-07-30 09:33:03

标签: javascript angular typescript angularjs-ng-form

我正在尝试通过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)

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()