如何在test中设置由构造函数填充的私有字段?

时间:2016-10-20 11:56:41

标签: unit-testing angular typescript jasmine

我有一个简单的组件,应该根据当前日期预选一个值:

export class VorgangComponent implements OnInit {
    private _date: Moment;

    constructor() {
        this._date = utc();
    }

    ngOnInit() {
        this.preselectOption();
    }

没有真正的火箭科学 我想知道如何测试这个课程。我脑子里有不同的想法,但我不知道推荐的方式:

  • 约会服务(对我来说似乎有点矫枉过正)
  • 受保护的成员并使用类继承进行测试
  • 受保护的方法并使用类继承进行测试

我错过了什么吗?有没有办法使用茉莉花?

1 个答案:

答案 0 :(得分:0)

  

我错过了什么吗?

Javascript中不存在

privatepublic,它仅用于编译时检查。在运行时,它是完全可访问的。所以你可以使用字符串acessor component['_date']。唯一不好的是你丢失了对返回值的任何intellisense和编译时检查

或者您可以忘记private关键字。样式方面,_已经暗示私有(可能不是编译方式)。但即使在Angular源中,他们也不使用private。他们只使用_。我想这是一种风格问题。不确定为什么Angular选择这种风格的原因,但个人而言,这也是我刚开始推出的东西。