首先,您需要以某種方式訪問您的測試中的匿名函數,因此您必須將它們分配給一個變量或命名它們。一旦你這樣做了,爲了測試它們,你有兩個選擇:把測試放到閉包(你的主函數)本身或者把代碼添加到引用你想測試的函數的閉包中。
不幸的是,第一個選項不是很好,因爲顯而易見的原因,第二個選項膨脹了你的API。但是,正如Philip Walton在his blog post中出色地解釋的那樣,您可以使用選項二明確地在您的API中調用您的測試,然後將它們作爲構建過程的一部分移除。
菲利普進入在他的崗位有更詳細的,我建議你讀它,但這裏是一個快照,讓你開始:
function closure(){
// public variables here
var publicVariable1 = 1;
var publicVariable2 = 2;
return {
publicVariable1 : publicVariable1,
publicVariable2 : publicVariable2,
__tests__: {
add: add,
subtract: subtract
}
};
// private methods you do not wish to expose (but must for unit testing purposes).
function add(a,b){
return a + b;
};
function subtract(a,b){
return a - b;
}
}
永遠不要單元測試的東西都是不向外面對。你想測試的聲音就像測試私有狀態一樣。不要測試它。 –
相反 - 只要檢查計數器是否增加,當觸發它們時觸發它們(即向外) –
只是命名函數,它不像你在任何情況下都不能這樣做...... – dandavis