我剛剛閱讀了關於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