On Feb 17, 12:32 pm, "Matthias Reuter" <[email protected]> wrote:
> Hi all,
>
> I use the module pattern to keep the global object clean. Mostly, my  
> modules are completely independant, so I do not use the revealing module  
> pattern.
>
> (function () {
>
>    function a () {}
>    function b () {}
>
> }());
>
> Now the question is, how do I unit-test function a and function b? Somehow  
> I need to be able to access these functions, on the other hand I actually  
> don't want these to be accessible, otherwise I wouldn't have chosen the  
> module pattern.
>
> My first idea was to omit the immediate function which forms the module  
> pattern in the source files, and wrap it around the module during the  
> build process. Unfortunately, that would mean I would either have to build  
> the application everytime I make a change, or I would have to carefully  
> prevent variable name collisions during development. Which I don't want,  
> that's why I'm using the module pattern.
>
> A different idea was to reveal all inner functions, if some global debug  
> object is set:
>
> (function () {
>
>    function a () {}
>    function b () {}
>
>    if (typeof _debug !== "undefined") {
>      _debug.addModule({
>        "a" : a,
>        "b" : b
>      }, this);
>    }
>
> }());
>
> Now I'm not too happy about that approach either. So do you have any ideas  
> how to test functions within a module?
>
> Matt

Hi

Perhaps a silly idea but what about a single function within the
module that you use to call the sub-functions:-

(function () {


   function a () {}
   function b () {}

   function unitTest(functionName, argumentsArray)
   {
          var fn;
          eval("var fn = " + functionName);
          if (!fn) { return; }
         return fn.apply({}, argumentsArray);
     }
    // expose unitTest

}());

Regards

Julian





-- 
To view archived discussions from the original JSMentors Mailman list: 
http://www.mail-archive.com/[email protected]/

To search via a non-Google archive, visit here: 
http://www.mail-archive.com/[email protected]/

To unsubscribe from this group, send email to
[email protected]

Reply via email to