У меня есть родительский компонент ValidateSessionComponent
, у которого есть дочерний компонент LoginFormComponent
. В моем модульном тесте я хочу выдать значение от LoginFormComponent
, но я не могу понять, как я могу это сделать.
HTML-код ValidateSessionComponent
содержит ссылку на 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
в спецификации 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
. Я не могу понять, как получить доступ к formOutputEvent
.