2010-02-09 110 views
5

我正在使用QUnit,它非常出色。Javascript沙盒單元測試

我已將我的JS應用程序包含在(function() {})();沙箱中。這隱藏了很多我不想公開的代碼,但我也需要測試該代碼。

這裏是如何工作的一個例子:

(function() { 

    var PublicAPI = window.PublicAPI = {};   
    PublicAPI.publicFunction = function (foo) { 
     PrivateAPI.privateFunction(foo); 
     return 'bar'; 
    }; 

    var PrivateAPI = {}; 
    PrivateAPI.privateFunction: function (foo) { 
     // Make secret stuff that never gets returned to the public 
     // Could be an AJAX call. 
    } 

})(); 

所以在這裏我可以很容易地單元測試PublicAPI.publicFunction,但如何將我測試PrivateAPI.privateFunction

回答

3

This similar question總結得非常好......最簡單的方法是不處理私有方法,因爲如果他們想要更改它們...公共方法就是需要測試的方法。如果你想測試你的內部函數,你需要留下一些鉤子以便qunit能夠找到。

1

你不能。沒有辦法從該範圍之外訪問它。你唯一的希望就是對它進行集成測試,即在使用你的內部函數的全局可用對象上測試函數。

更好的是:不要私人功能。有什麼大不了的?