【发布时间】:2011-02-25 08:24:45
【问题描述】:
我正在为一个小型 Javascript 应用程序中的模块编写单元测试。为了保持接口干净,一些实现细节被匿名函数封闭(通常的 JS 隐私模式)。但是,在测试时,我需要访问/模拟/验证私密部分。
我之前编写的大多数测试都是在 Python 中进行的,其中没有真正的私有变量(成员、标识符,无论您想如何称呼它们)。一个简单地通过前导下划线为用户建议隐私,并在测试代码时随意忽略它。在静态类型的 OO 语言中,我想可以通过将私有成员转换为受保护的对象并对要测试的对象进行子类化,从而使测试可以访问私有成员。在 Javascript 中,后者不适用,而前者似乎是不好的做法。
我总是可以退回到黑盒测试并简单地检查最终结果。这是最简单、最干净的方法,但遗憾的是,它的详细程度不足以满足我的需求。
那么,有没有一种标准的方法可以在保持变量私有的同时仍然保留一些用于在 Javascript 中进行测试的后门?
【问题讨论】:
-
嗯,我不喜欢别人嘲笑我的私处
标签: javascript unit-testing testing name-decoration