[英]Issues testing an Angular component
我有一个带有以下初始化的组件
ngOnInit() {
this.transactionForm.get('type').valueChanges.subscribe(transType => {
if (transType === 'xx') {
this.transactionForm.patchValue({
subTotal: 0
});
console.log('done', this.transactionForm.value);
}
});
}
我正在尝试编写以下测试:
it('should ...', () => {
fixture.detectChanges();
const expectedSubTotal = 0;
comp.transactionForm.patchValue({
type: 'xx',
subTotal: 42
});
fixture.detectChanges();
console.log('getting');
const actual = comp.transactionForm.get('subTotal').value; // Does not get 0 - gets 42 instead
expect(actual).toBe(expectedSubTotal);
});
console.log
都输出正确的值,但是我似乎无法通过此测试。 我想念什么?
您应该知道订阅者在form.patchValue
期间同步执行
.patchValue({ type: 'xx', subTotal: 42 });
(1) (3)
||
\/
(2)
form.get('type').valueChanges.subscribe
因此,要么运行
comp.transactionForm.get('type').updateValueAndValidity();
修补或重新排列属性后
.patchValue({ subTotal: 42, type: 'xx' });
但
JavaScript中不能保证对象中的属性顺序
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.