Fixed bug where multiple calls to jasmine.Clock.useMock cause multiple tear downs

This commit is contained in:
Lee Byrd & Christian Williams
2010-06-23 11:03:05 -07:00
parent 6a9f74e849
commit 9c8180d8d0
4 changed files with 46 additions and 17 deletions

View File

@@ -64,9 +64,9 @@ jasmine.FakeTimer.prototype.runFunctionsWithinRange = function(oldMillis, nowMil
funcToRun.funcToCall();
if (funcToRun.recurring) {
this.scheduleFunction(funcToRun.timeoutKey,
funcToRun.funcToCall,
funcToRun.millis,
true);
funcToRun.funcToCall,
funcToRun.millis,
true);
}
} catch(e) {
}
@@ -110,10 +110,12 @@ jasmine.Clock = {
},
useMock: function() {
var spec = jasmine.getEnv().currentSpec;
spec.after(jasmine.Clock.uninstallMock);
if (!jasmine.Clock.isInstalled()) {
var spec = jasmine.getEnv().currentSpec;
spec.after(jasmine.Clock.uninstallMock);
jasmine.Clock.installMock();
jasmine.Clock.installMock();
}
},
installMock: function() {
@@ -121,6 +123,7 @@ jasmine.Clock = {
},
uninstallMock: function() {
jasmine.log("uninstall")
jasmine.Clock.assertInstalled();
jasmine.Clock.installed = jasmine.Clock.real;
},
@@ -133,11 +136,15 @@ jasmine.Clock = {
},
assertInstalled: function() {
if (jasmine.Clock.installed != jasmine.Clock.defaultFakeTimer) {
if (!jasmine.Clock.isInstalled()) {
throw new Error("Mock clock is not installed, use jasmine.Clock.useMock()");
}
},
isInstalled: function() {
return jasmine.Clock.installed == jasmine.Clock.defaultFakeTimer;
},
installed: null
};
jasmine.Clock.installed = jasmine.Clock.real;
@@ -171,7 +178,7 @@ jasmine.getGlobal().clearInterval = function(timeoutKey) {
if (jasmine.Clock.installed.clearTimeout.apply) {
return jasmine.Clock.installed.clearInterval.apply(this, arguments);
} else {
return jasmine.Clock.installed.clearInterval(timeoutKey);
return jasmine.Clock.installed.clearInterval(timeoutKey);
}
};