我有一个父级组件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);
,但是我不知道如何访问formOutputEvent
中LoginFormComponent
的{{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
。