diff options
| author | Vojta Jina | 2012-08-30 14:42:46 -0700 |
|---|---|---|
| committer | Igor Minar | 2012-08-30 16:53:52 -0700 |
| commit | 8fa2bb72bc010c9967f41e2ba80088d7ed413e37 (patch) | |
| tree | bf73302e1ba568b4f010f29d644b446f595e271a /src/ngMock/angular-mocks.js | |
| parent | d151f949375ea1b42c51e3cc6e42ae79b69e6959 (diff) | |
| download | angular.js-8fa2bb72bc010c9967f41e2ba80088d7ed413e37.tar.bz2 | |
fix(mocks): free up memory after every spec
Diffstat (limited to 'src/ngMock/angular-mocks.js')
| -rw-r--r-- | src/ngMock/angular-mocks.js | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/src/ngMock/angular-mocks.js b/src/ngMock/angular-mocks.js index 9fec9710..4b12a097 100644 --- a/src/ngMock/angular-mocks.js +++ b/src/ngMock/angular-mocks.js @@ -1591,9 +1591,29 @@ window.jasmine && (function(window) { afterEach(function() { var spec = getCurrentSpec(); + var injector = spec.$injector; + spec.$injector = null; spec.$modules = null; + + if (injector) { + injector.get('$rootElement').unbind(); + injector.get('$browser').pollFns.length = 0; + } + angular.mock.clearDataCache(); + + // clean up jquery's fragment cache + angular.forEach(angular.element.fragments, function(val, key) { + delete angular.element.fragments[key]; + }); + + MockXhr.$$lastInstance = null; + + angular.forEach(angular.callbacks, function(val, key) { + delete angular.callbacks[key]; + }); + angular.callbacks.counter = 0; }); function getCurrentSpec() { @@ -1694,7 +1714,7 @@ window.jasmine && (function(window) { */ window.inject = angular.mock.inject = function() { var blockFns = Array.prototype.slice.call(arguments, 0); - var stack = new Error('Declaration Location').stack; + var errorForStack = new Error('Declaration Location'); return isSpecRunning() ? workFn() : workFn; ///////////////////// function workFn() { @@ -1710,10 +1730,12 @@ window.jasmine && (function(window) { try { injector.invoke(blockFns[i] || angular.noop, this); } catch (e) { - if(e.stack) e.stack += '\n' + stack; + if(e.stack) e.stack += '\n' + errorForStack.stack; throw e; + } finally { + errorForStack = null; } } } - } + }; })(window); |
