2010-02-09 12 views
5

Używam QUnit, który jest doskonały.Testowanie jednostki testowej JavaScript Javascript

Dołączyłem moją aplikację JS do piaskownicy (function() {})();. To ukrywa dużo kodu, którego nie chcę publicznie, ale muszę też przetestować ten kod.

Oto przykład jak to działa:

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

})(); 

Więc mogę łatwo testów jednostkowych PublicAPI.publicFunction, ale jak będę testować PrivateAPI.privateFunction?

Odpowiedz

3

This similar question podsumowuje to całkiem dobrze ... Najłatwiej jest nie zajmować się prywatnymi metodami, ponieważ mogą one ulec zmianie, jeśli chcą ... Publiczne metody wymagają testów. Jeśli chcesz przetestować swoje wewnętrzne funkcje, musisz zostawić coś w rodzaju qunit, aby móc je znaleźć.

1

Nie możesz. Nie można uzyskać do niego dostępu spoza tego zakresu. Twoja jedyna nadzieja polega na testowaniu integracji, tzn. Testowaniu funkcji na globalnie dostępnym obiekcie, który wykorzystuje twoje wewnętrzne funkcje.

Jeszcze lepiej: nie twórz prywatnych funkcji. O co tyle szumu?