2010-02-09 33 views
5

QUnit kullanıyorum, bu mükemmel.Javascript Sandbox birim testi

JS uygulamamı (function() {})(); sanal alanına ekledim. Bu, herkese açık istemediğim pek çok kodu gizler, ancak bu kodu da denemeliyim.

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

})(); 

Yani burada kolayca birim test PublicAPI.publicFunction ama nasıl PrivateAPI.privateFunction test edecek edebilirsiniz: İşte

Bunun nasıl çalıştığını bir örnek?

cevap

3

This similar question bunu çok iyi özetliyor ... En kolay yöntem, ister istemez değiştirebilecekleri gibi özel yöntemlerle uğraşmamaktır ... Kamu yöntemleri, sınamaya ihtiyaç duyanlardır. Dahili fonksiyonlarınızı test etmek istiyorsanız, bulabileceğiniz qunit için bir çeşit kanca bırakmanız gerekir.

1

Yapamazsınız. Bu kapsamın dışından erişmenin bir yolu yoktur. Tek umudunuz test etmek, yani dahili fonksiyonlarınızı kullanan global olarak mevcut nesnede test fonksiyonlarını test etmektir.

Daha da iyisi: özel işlevler yapma. Problem ne?