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你说得对,你错了,我错了