我刚刚阅读了关于Javascript的测试驱动开发的这本精彩的书,并且在那里他提到了创建具有私有成员的对象的一种惊人方式,最初由Douglas Crockford创建,称为“功能性遗产”。它是这样的:功能继承中的单元测试私有方法
this.funcInh = function() {
var privateString = "functional inheritance";
function setPrivateString(string) {
privateString = string;
}
function getPrivateString() {
return privateString;
}
return {
setPrivateString: setPrivateString,
getPrivateString: getPrivateString
};
};
虽然我真的很喜欢创建对象的这种方式,我想知道如何在地球上我可以测试它,不是测试特权功能“setPrivateString”的返回值,其他和“getPrivateString ”。这只是一个例子,但我真的不明白任何方式来测试“私人”功能或特权函数调用他们应该的功能...任何想法?
我部分同意你的看法。在某些情况下,函数可以给出看起来是正确的回报,而唯一可以确定的方法就是测试一个私有函数......然而,我认为这对功能继承是非常困难的... –
从我自己的经验来看:没有测试私有者就容易多了 - 如果你的公共方法调用某些私有(它做了别的 - 例如创建文件/在DB/orr上执行任何操作) - 只是测试公共方法的结果并且像预期的那样,另外测试诸如文件,DB上的数据等外部事物的创建/修改/删除/没有“知道”私有和他们的实现 - 以这种方式,你总是可以完全改变内部事物,并且测试将在公共结果和所有“外部”资源/数据在结束时一直运行良好 – Laimoncijus