具有受保护@Input场的角度单元测试组件



我们习惯于制作变量protected这些变量仅用于组件及其子类,而不用于模板。

如果您的类中有 10 个变量,并且使用protectedprivatepublic,则很容易知道模板中使用了哪些变量,那么这尤其是一个优势。

@Input() public disablePlus: boolean = false;
@Input() public disableMinus: boolean = false;
@Input() protected jumpSize: number = 1000;

现在我要为此组件创建一些单元测试。但是我无法在我的it方法中主动更改这些值:

it('should change jumpSize to 5000', () => {
component.jumpSize= 5000; 
// ts2445: Property `jumpSize` is protected and only accessible within class and its subclasses
...
});
it('plus should be disabled', () => {
component.disablePlus= true; // no error
...
});

有没有办法将 jumpSize 保留protected还是我们必须将其更改为public

还是您认为我们对protected @Input领域的方法无论如何都是愚蠢的,不是很有用?

我很感激任何建议。

我从未见过任何这样的例子(在input上使用protected(。

事实上,它们应该是公开的,因为顾名思义,input应该从类外部更新。您是否在应用程序上使用 AOT?如果真的编译,我什至感到惊讶。

从您的角度来看,这将是您在测试中更新属性时遇到的相同问题。如果您处于开发模式,则它使用JIT(实时编译(,并且您不会从模板中获得此类检查。这就是为什么它可能有效。

结论:把你所有的input都放在public

相关内容

  • 没有找到相关文章

最新更新