问题描述
我说的是Typescript,但这可能是一个普遍的问题...
如何测试属性为只读?
我的意思是,这是一种语言功能,因此似乎很明显,如果我将一个属性声明为只读,则由于代码无法编译,因此没有人可以重新分配它,但是没有任何测试,没有人向我保证我可以安全地更改代码,使属性可写,然后对其进行修改... 那么,如果该属性可写,我该如何编写失败的单元测试?
解决方法
您还要测试其他属性是私有的还是公共的?不要走那条路。这显然是过度测试的情况。
,你能编写这样的测试吗?是的;使用简单的 javascript 调用您的 Typescript 代码转换为的 javascript 代码。
但是,应该编写这样的测试吗? 号
使用诸如 Typescript 之类的转译和/或编译语言的主要原因之一是编译器承担了部分正确性负担。具体来说,就是语言提供的保证的正确性。
所以请坐下来享受编译器为您完成的繁重工作。
一个警告:如果您的项目混合使用 javascript 和 Typescript,那么您可能想要考虑它,但是花时间将 javascript 位重写为 Typescript 可能仍然更好。
编辑:
从测试的角度看情况:测试需要什么才能现在通过而稍后由于回归而失败?
好吧,由于如果稍后的一些编辑修改了 readonly
属性,代码将无法编译,因此此编辑必须包括从属性中删除 readonly
。
但是看到并拒绝了这个守卫,是什么阻止编辑删除现在也失败的测试?
所以从某种意义上说,readonly
修饰符是测试。