繁体   English   中英

测试Angular组件时出现问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM