Javascript angular4更改后测试输入值

Javascript angular4更改后测试输入值,javascript,angular,unit-testing,testing,jasmine,Javascript,Angular,Unit Testing,Testing,Jasmine,我希望在测试时更改输入的值,因此: const de = fixture.debugElement.query(By.css('[formControlName="username"]')); de.nativeElement.value = "10"; 然后我提交表格: component.onSubmit(); 输入的值仍然保持不变。 我试图补充 fixture.detectChanges(); 提交表单后,它实际上什么也不做。为什么要通过CSS选择器获取元素?Angular有一种方法

我希望在测试时更改输入的值,因此:

const de = fixture.debugElement.query(By.css('[formControlName="username"]'));
de.nativeElement.value = "10";
然后我提交表格:

component.onSubmit();
输入的值仍然保持不变。 我试图补充

fixture.detectChanges();

提交表单后,它实际上什么也不做。

为什么要通过CSS选择器获取元素?Angular有一种方法可以创造出比你想做的要容易得多的东西。举个例子:

export class ReactiveFormExampleComponent implements OnInit {
  public form: FormGroup;

  constructor () { } 

  ngOnInit(): void {
    this.form = new FormGroup({ 
      'username': FormControl(null, [/** Any form validators here **/]) 
    });
  }

  onSubmit(): void {
    // get the value of the username
    const username = this.form.get('username').value;
  }
}
如果您真的想查看值并检测更改,而无需按下带有附加单击事件的按钮,您可以在初始化表单后执行此操作

this.form.get('username').valueChanges.subscribe(val => {
  // new username value is `val`
});

但我写的是spec@Stwosch您没有指定在问题或标题中的任何地方,如果您明确说明,您会得到更多的回答。我在标题中写了“测试”,在描述“我想在测试时更改输入值”中,在我的代码中,有测试中发生的装置。除此之外,在标签中我还包括了“单元测试”、“测试”和“jasmine”,但感谢您的回答,因为我认识到我可以使用setValue方法而不是get and all Gonesuccessful@Stwosch你说得对,你错了,我错了