2010-02-09 25 views
5

Estoy usando QUnit, que es excelente.Javascript Sandbox unit testing

Adjunté mi aplicación JS en el arenero (function() {})();. Esto esconde una gran cantidad de código que no quiero que sea público, pero también necesito probar ese código.

Aquí es un ejemplo de cómo funciona esto:

(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. 
    } 

})(); 

Así que aquí puedo fácilmente prueba de unidad PublicAPI.publicFunction, pero ¿cómo voy a probar PrivateAPI.privateFunction?

Respuesta

3

This similar question lo resume bastante bien ... Lo más fácil es no tratar con los métodos privados, ya que pueden cambiar si lo desean ... Los métodos públicos son los que necesitan pruebas. Si desea probar sus funciones internas, debe dejar un gancho de algún tipo para que qunit pueda encontrar.

1

No puede. No hay forma de acceder desde fuera de ese alcance. Su única esperanza es la prueba de integración, es decir, las funciones de prueba en el objeto disponible a nivel mundial que utilizan sus funciones internas.

Mejor aún: no haga funciones privadas. ¿Cual es el problema?