Skip to content

Commit 8fa2bb7

Browse files
vojtajinaIgorMinar
authored andcommitted
fix(mocks): free up memory after every spec
1 parent d151f94 commit 8fa2bb7

File tree

1 file changed

+25
-3
lines changed

1 file changed

+25
-3
lines changed

src/ngMock/angular-mocks.js

+25-3
Original file line numberDiff line numberDiff line change
@@ -1591,9 +1591,29 @@ window.jasmine && (function(window) {
15911591

15921592
afterEach(function() {
15931593
var spec = getCurrentSpec();
1594+
var injector = spec.$injector;
1595+
15941596
spec.$injector = null;
15951597
spec.$modules = null;
1598+
1599+
if (injector) {
1600+
injector.get('$rootElement').unbind();
1601+
injector.get('$browser').pollFns.length = 0;
1602+
}
1603+
15961604
angular.mock.clearDataCache();
1605+
1606+
// clean up jquery's fragment cache
1607+
angular.forEach(angular.element.fragments, function(val, key) {
1608+
delete angular.element.fragments[key];
1609+
});
1610+
1611+
MockXhr.$$lastInstance = null;
1612+
1613+
angular.forEach(angular.callbacks, function(val, key) {
1614+
delete angular.callbacks[key];
1615+
});
1616+
angular.callbacks.counter = 0;
15971617
});
15981618

15991619
function getCurrentSpec() {
@@ -1694,7 +1714,7 @@ window.jasmine && (function(window) {
16941714
*/
16951715
window.inject = angular.mock.inject = function() {
16961716
var blockFns = Array.prototype.slice.call(arguments, 0);
1697-
var stack = new Error('Declaration Location').stack;
1717+
var errorForStack = new Error('Declaration Location');
16981718
return isSpecRunning() ? workFn() : workFn;
16991719
/////////////////////
17001720
function workFn() {
@@ -1710,10 +1730,12 @@ window.jasmine && (function(window) {
17101730
try {
17111731
injector.invoke(blockFns[i] || angular.noop, this);
17121732
} catch (e) {
1713-
if(e.stack) e.stack += '\n' + stack;
1733+
if(e.stack) e.stack += '\n' + errorForStack.stack;
17141734
throw e;
1735+
} finally {
1736+
errorForStack = null;
17151737
}
17161738
}
17171739
}
1718-
}
1740+
};
17191741
})(window);

0 commit comments

Comments
 (0)