javascript - 单元测试角度@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()。这个测试用例失败了。我认为我在测试用例中所做的可能是错误的。谁能澄清一下这有什么问题。
解决方案
正如 Aniket Kadam 已经指出的那样,当您设置时,
fixture.componentInstance.price = 4500
您并没有使用setPrice
您需要调用才能触发的设置器this.modifyTotalAmount()
fixture.componentInstance.setPrice = 4500
而是这样做。
推荐阅读
- bash - 如何在 bash 函数中返回对话问题的结果
- c++ - 困惑如何使用 IDL 与 Ethovision 进行通信
- oracle - Pl / SQL Oracle 帮助在子查询中运行日期
- python - 使 Python 可执行到 app mac os catalina
- python - 为什么带有 Ryzen Threadripper 的 Numpy 比 Xeon 慢这么多?
- python - 计算值并创建新的数据框
- python - 用浓度箱 Python 绘制风玫瑰图
- ansible - 将字典传递给子模块角色时未定义的变量
- typescript - 错误:获取https://deno.land/std@0.59.0/path/mod.ts的编译源代码失败。原因:系统找不到指定的路径。(操作系统错误 3)
- excel - 将用户窗体按钮标签链接到 VLookup 代码