首页 > 解决方案 > 单元测试角度@Input设置功能未触发

问题描述

在我的组件中

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

测试(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()。这个测试用例失败了。我认为我在测试用例中所做的可能是错误的。谁能澄清一下这有什么问题。

标签: javascriptangularunit-testingkarma-jasmine

解决方案


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

fixture.componentInstance.setPrice = 4500而是这样做。


推荐阅读