单元测试Angular @Input设置功能未触发

问题描述 投票:0回答:1

在我的组件中

@Input('price')
set setPrice(price) {
    this.price = price;
    this.modifyTotalAmount();
}

test(component.spec.ts)

it('should call function ', () => {
    spyOn(fixture.componentInstance, 'modifyTotalAmount');
    fixture.componentInstance.price = 4500;
    fixture.detectChanges();
    const divActualPrice = fixture.debugElement.query(By.css('#actualPrice'));
    expect(divActualPrice.componentInstance.modifyTotalAmount).toHaveBeenCalled();
});

通常当父组件值被更改时,此setPrice(price)命中并调用modifyTotalAmount()函数。但是当单元测试运行时,modifyTotalAmount()没有被调用。这个测试案例得到了解决方案。我认为我在测试用例中所做的事情可能是错误的。任何人都可以澄清这是错误的。

javascript angular unit-testing karma-jasmine
1个回答
1
投票

正如Aniket Kadam已经指出的那样,当你设置fixture.componentInstance.price = 4500时,你没有使用你需要调用的setter setPrice才能触发this.modifyTotalAmount()

所以fixture.componentInstance.setPrice = 4500代替。

© www.soinside.com 2019 - 2024. All rights reserved.