在使用 Jasmine 和 Angular 的单元测试中无法获得 select 按钮点击
Unable to get select button click in unit testing using Jasmine and Angular
您好,我正在使用 Angular 并尝试为 Reactive 表单创建单元测试但无法成功
我需要什么:如何在 angular.
中使用茉莉花填充虚假值和真实值后执行按钮单击
我做了什么:我创建了一个逻辑,但它不起作用
it('Form check is valid or not if no values entered', () => {
expect(component.userCreationForm.valid).toBeFalsy();
});
it('Form check is valid or not when values entered', () => {
component.userCreationForm.controls['firstname'].setValue('luther');
component.userCreationForm.controls['lastname'].setValue('adams');
component.userCreationForm.controls['email'].setValue('test@gmail.com');
component.userCreationForm.controls['password'].setValue('123456');
expect(component.userCreationForm.valid).toBeTruthy();
});
it('Form Submitted should check from is submitted', () => {
// check form is invalid
expect(component.userCreationForm.invalid).toBeTruthy();
let btn = fixture.debugElement.query(By.css('button[type=submit]'));
// Check button is disabled
expect(btn.nativeElement.disabled).toBeTruthy();
component.userCreationForm.controls['firstname'].setValue('luther');
component.userCreationForm.controls['lastname'].setValue('adams');
component.userCreationForm.controls['email'].setValue('test@gmail.com');
component.userCreationForm.controls['password'].setValue('testpassword');
fixture.detectChanges();
// check button is enabled
expect(btn.nativeElement.disabled).toBeFalsy();
component.onUserCreation();
fixture.detectChanges();
let success = fixture.debugElement.query(By.css('#success-msg')).nativeElement;
expect(success.textContent).toBe('Bubba');
});
html逻辑
<div class="inv-buttons">
<button mat-raised-button color="primary" [disabled]="userCreationForm.invalid" type="submit">Create User</button>
</div>
下面是我的 stackblitz:https://stackblitz.com/edit/angular-9-material-starter-q9wxvq
您想在哪里单击您创建的按钮。像下面这样使用它:-
btn.nativeElement.click();
我在下面更改了你的测试用例:-
it('Form Submitted should check from is submitted',async () => {
// check form is invalid
expect(component.userCreationForm.invalid).toBeTruthy();
let btn = fixture.debugElement.query(By.css('button[type=submit]'));
// Check button is disabled
expect(btn.nativeElement.disabled).toBeTruthy();
component.userCreationForm.controls['firstname'].setValue('luther');
component.userCreationForm.controls['lastname'].setValue('adams');
component.userCreationForm.controls['email'].setValue('test@gmail.com');
component.userCreationForm.controls['password'].setValue('testpassword');
fixture.detectChanges();
// check button is enabled
expect(btn.nativeElement.disabled).toBeFalsy();
await fixture.whenStable();
console.clear();
btn.nativeElement.click();
fixture.detectChanges();
//component.onUserCreation();
//fixture.detectChanges();
//let success = fixture.debugElement.query(By.css('#success-msg')).nativeElement;
//expect(success.textContent).toBe('Bubba');
});
您好,我正在使用 Angular 并尝试为 Reactive 表单创建单元测试但无法成功
我需要什么:如何在 angular.
中使用茉莉花填充虚假值和真实值后执行按钮单击我做了什么:我创建了一个逻辑,但它不起作用
it('Form check is valid or not if no values entered', () => {
expect(component.userCreationForm.valid).toBeFalsy();
});
it('Form check is valid or not when values entered', () => {
component.userCreationForm.controls['firstname'].setValue('luther');
component.userCreationForm.controls['lastname'].setValue('adams');
component.userCreationForm.controls['email'].setValue('test@gmail.com');
component.userCreationForm.controls['password'].setValue('123456');
expect(component.userCreationForm.valid).toBeTruthy();
});
it('Form Submitted should check from is submitted', () => {
// check form is invalid
expect(component.userCreationForm.invalid).toBeTruthy();
let btn = fixture.debugElement.query(By.css('button[type=submit]'));
// Check button is disabled
expect(btn.nativeElement.disabled).toBeTruthy();
component.userCreationForm.controls['firstname'].setValue('luther');
component.userCreationForm.controls['lastname'].setValue('adams');
component.userCreationForm.controls['email'].setValue('test@gmail.com');
component.userCreationForm.controls['password'].setValue('testpassword');
fixture.detectChanges();
// check button is enabled
expect(btn.nativeElement.disabled).toBeFalsy();
component.onUserCreation();
fixture.detectChanges();
let success = fixture.debugElement.query(By.css('#success-msg')).nativeElement;
expect(success.textContent).toBe('Bubba');
});
html逻辑
<div class="inv-buttons">
<button mat-raised-button color="primary" [disabled]="userCreationForm.invalid" type="submit">Create User</button>
</div>
下面是我的 stackblitz:https://stackblitz.com/edit/angular-9-material-starter-q9wxvq
您想在哪里单击您创建的按钮。像下面这样使用它:-
btn.nativeElement.click();
我在下面更改了你的测试用例:-
it('Form Submitted should check from is submitted',async () => {
// check form is invalid
expect(component.userCreationForm.invalid).toBeTruthy();
let btn = fixture.debugElement.query(By.css('button[type=submit]'));
// Check button is disabled
expect(btn.nativeElement.disabled).toBeTruthy();
component.userCreationForm.controls['firstname'].setValue('luther');
component.userCreationForm.controls['lastname'].setValue('adams');
component.userCreationForm.controls['email'].setValue('test@gmail.com');
component.userCreationForm.controls['password'].setValue('testpassword');
fixture.detectChanges();
// check button is enabled
expect(btn.nativeElement.disabled).toBeFalsy();
await fixture.whenStable();
console.clear();
btn.nativeElement.click();
fixture.detectChanges();
//component.onUserCreation();
//fixture.detectChanges();
//let success = fixture.debugElement.query(By.css('#success-msg')).nativeElement;
//expect(success.textContent).toBe('Bubba');
});