2010-02-09 4 views
5

Sto usando QUnit, che è eccellente.Test unità sandbox Javascript

Ho allegato la mia app JS nella sandbox (function() {})();. Questo nasconde un sacco di codice che non voglio pubblico, ma ho anche bisogno di testare quel codice.

Ecco un esempio di come funziona:

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

})(); 

Quindi qui posso facilmente unit test PublicAPI.publicFunction, ma come faccio a testare PrivateAPI.privateFunction?

risposta

3

This similar question riassume molto bene ... Il modo più semplice è quello di non affrontare i metodi privati, in quanto possono cambiare se vogliono ... I metodi pubblici sono quelli che devono essere testati. Se vuoi testare le tue funzioni interne, devi riuscire a trovare un gancio di qualche tipo per qunit.

1

Non è possibile. Non c'è modo di accedervi dall'esterno di tale ambito. La tua unica speranza è quella di testare l'integrazione, ovvero le funzioni di test sull'oggetto globalmente disponibile che utilizza le tue funzioni interne.

Ancora meglio: non eseguire funzioni private. Qual è il grosso problema?