diff --git a/lib/jasmine-core/jasmine.js b/lib/jasmine-core/jasmine.js index 48c00cb0..741077d4 100644 --- a/lib/jasmine-core/jasmine.js +++ b/lib/jasmine-core/jasmine.js @@ -1645,6 +1645,7 @@ getJasmineRequireObj().clearStack = function(j$) { tail = tail.next = { task: fn }; channel.port2.postMessage(0); } else { + currentCallCount = 0; setTimeout(fn); } }; diff --git a/spec/core/ClearStackSpec.js b/spec/core/ClearStackSpec.js index 2ea889d3..854d4478 100644 --- a/spec/core/ClearStackSpec.js +++ b/spec/core/ClearStackSpec.js @@ -42,7 +42,11 @@ describe("ClearStack", function() { clearStack(function() { }); expect(setImmediate.calls.count()).toEqual(9); - expect(setTimeout).toHaveBeenCalled(); + expect(setTimeout.calls.count()).toEqual(1); + + clearStack(function() { }); + expect(setImmediate.calls.count()).toEqual(10); + expect(setTimeout.calls.count()).toEqual(1); }); it("uses MessageChannels when available", function() { @@ -89,7 +93,11 @@ describe("ClearStack", function() { clearStack(function() { }); expect(fakeChannel.port2.postMessage.calls.count()).toEqual(9); - expect(setTimeout).toHaveBeenCalled(); + expect(setTimeout.calls.count()).toEqual(1); + + clearStack(function() { }); + expect(fakeChannel.port2.postMessage.calls.count()).toEqual(10); + expect(setTimeout.calls.count()).toEqual(1); }); it("calls setTimeout when onmessage is called recursively", function() { diff --git a/src/core/ClearStack.js b/src/core/ClearStack.js index aeb42b34..df5d8753 100644 --- a/src/core/ClearStack.js +++ b/src/core/ClearStack.js @@ -32,6 +32,7 @@ getJasmineRequireObj().clearStack = function(j$) { tail = tail.next = { task: fn }; channel.port2.postMessage(0); } else { + currentCallCount = 0; setTimeout(fn); } };