0.0.8 • Published 9 years ago

encapsulation v0.0.8

Weekly downloads
3
License
MIT
Repository
github
Last release
9 years ago

node-encapsulation

set private and public methods/properties but expose private methods/properties to the test environment.

Build Status

This module is a wrapper when creating node modules. This lets you easily expose methods/properties you really want to be private but still need to run tests on.

For eg.

module.exports = {
  myPublicMethod: function(){
    console.log('consumers will use me')
  },
  myPrivateMethod: function(){
    console.log('consumers dont need me but i still need to be tested')
  }
};

Therefore, instead of exposing methods/properties you don't really want to then you could do the following

var encapsulate = require('encapsulation').build;
var private = {}, public = {};

private.myPrivateMethod = function(){
  console.log('consumers dont need me but i still need to be tested')
}

public.myPublicMethod = function(){
  private.myPrivateMethod();
}

module.exports = encapsulate({private: private, public: public});

In the normal execution of your app:

var encapsulate = require('encapsulation').build;
var klazz = encapsulate({private: private, public: public});
/**
yeilds: {myPublicMethod: Function}
**/

When process.env.NODE_ENV is set to 'test':

var encapsulate = require('encapsulation').build;
var klazz = encapsulate({private: private, public: public});
/**
yeilds: {myPrivateMethod: Function, myPublicMethod: Function}
**/

The environment to look for by default is 'test' but can be configured:

/**
This only needs to be called once at the start of your app
**/
require('encapsulation').configure({env:'testing'});

Notes

  • Be careful not to use the same property names for public and private properties
  • Public properties take precedence over private properties
  • this is an experiment
  • pull requests are welcome
  • report issues if you see any (fix it if possible :-) )
0.0.8

9 years ago

0.0.7

9 years ago

0.0.6

9 years ago

0.0.5

9 years ago

0.0.4

9 years ago

0.0.3

9 years ago

0.0.2

9 years ago

0.0.1

9 years ago