search

goog.testing.PropertyReplacer

Provided By

Helper class for stubbing out variables and object properties for unit tests. This class can change the value of some variables before running the test cases, and to reset them in the tearDown phase. See googletest.StubOutForTesting as an analogy in Python: http://protobuf.googlecode.com/svn/trunk/python/stubout.py

Example usage:

 var stubs = new goog.testing.PropertyReplacer();

 function setUp() {
   // Mock functions used in all test cases.
   stubs.replace(Math, 'random', function() {
     return 4;  // Chosen by fair dice roll. Guaranteed to be random.
   });
 }

 function tearDown() {
   stubs.reset();
 }

 function testThreeDice() {
   // Mock a constant used only in this test case.
   stubs.set(goog.global, 'DICE_COUNT', 3);
   assertEquals(12, rollAllDice());
 }

Constraints on altered objects:

  • DOM subclasses aren't supported.
  • The value of the objects' constructor property must either be equal to the real constructor or kept untouched.

Code compiled with property renaming may need to use goog.reflect.objectProperty instead of simply naming the property to replace.

new PropertyReplacer()

Parameters

None.

Instance Methods