如何获取子组件的引用并从子组件中发出值

时间:2019-10-07 05:33:37

标签: angular6 angular-testing

我有一个父级组件ValidateSessionComponent,有一个子级组件LoginFormComponent。在我的单元测试中,我想从LoginFormComponent发出一个值,但是我无法弄清楚该怎么做。

ValidateSessionComponent的HTML引用了LoginFormComponent

<app-login-form #loginForm (formOutputEvent)="handleFormValues($event)" [userId]="username"></app-login-form>

LoginFormComponent看起来像

export class LoginFormComponent implements OnInit {

  loginForm:FormGroup;

  formData:LoginFormValues;
  @Input() userId;
  @Output() formOutputEvent: EventEmitter<LoginFormValues>;
  existingUser:UserSigninInfo;

..
}

在测试中,我想通过调用formOutputEvent发出formOutputEvent.emit(formData);,但是我不知道如何访问formOutputEventLoginFormComponent的{​​{1}}的规范。

ValidateSessionComponent

我以为我可以使用 fit('should send signin request on receiving form values ',(done)=>{ //let loginComponent:LoginFormComponent = TestBed.get(LoginFormComponent); //IF I UNCOMMENT THIS THEN I GET ERROR NO PROVIDER OF LOGINFORMCOMPONENT let userService:UserManagementService = TestBed.get(UserManagementService); component.loginForm.formOutputEvent.emit(new LoginFormValues('test@test.com','somepassword')); spyOn(userService,'signinUser'); setTimeout(()=>{ expect(userService.signinUser).toHaveBeenCalledWith(new UserSigninInfo('test@test.com','somepassword')); done(); },1000); }); 指令ViewChild,但我想我会得到一个@ViewChild(loginForm) loginFormRef;。我不知道如何访问ElementRef

0 个答案:

没有答案