diff --git a/test/issues/issues-test.js b/test/issues/issues-test.js index 2db9b2366..4d5451f43 100644 --- a/test/issues/issues-test.js +++ b/test/issues/issues-test.js @@ -200,61 +200,4 @@ describe("issues", function () { assert(firstFake !== secondFake); }); }); - - describe("#1274 - spy.withArgs(args...).callCount is incorrect", function () { - it("case1: should count accurately", function () { - var obj = { - f: function () {} - }; - - // case1: withArgs(1) => withArgs(1, 1) - var spy = sinon.spy(obj, "f"); - assert.equals(spy.callCount, 0); - assert.equals(spy.withArgs(1).callCount, 0); - assert.equals(spy.withArgs(1, 1).callCount, 0); - - obj.f(); - obj.f(1); - obj.f(1, 1); - obj.f(1, 2); - - assert.equals(spy.callCount, 4); - assert.equals(spy.withArgs(1).callCount, 3); - assert.equals(spy.withArgs(1, 1).callCount, 1); - assert.equals(spy.withArgs(1, 2).callCount, 1); - }); - it("case2: should count accurately", function () { - var obj = { - f: function () {} - }; - - // case2: withArgs(1, 1) => withArgs(1) - var spy = sinon.spy(obj, "f"); - assert.equals(spy.callCount, 0); - assert.equals(spy.withArgs(1, 1).callCount, 0); - assert.equals(spy.withArgs(1).callCount, 0); - - obj.f(); - obj.f(1); - obj.f(1, 1); - obj.f(1, 2); - - assert.equals(spy.callCount, 4); - assert.equals(spy.withArgs(1).callCount, 3); - assert.equals(spy.withArgs(1, 1).callCount, 1); - assert.equals(spy.withArgs(1, 2).callCount, 1); - }); - it("case3: should work on stub", function () { - var stub = sinon.stub(); - stub.returns(0); - stub.withArgs(1, 1).returns(2); - stub.withArgs(1).returns(1); - - assert.equals(stub(), 0); - assert.equals(stub(1), 1); - assert.equals(stub(1, 1), 2); - assert.equals(stub(1, 1, 1), 2); - assert.equals(stub(2), 0); - }); - }); }); diff --git a/test/spy-test.js b/test/spy-test.js index d03ed7a1f..02e849b2c 100644 --- a/test/spy-test.js +++ b/test/spy-test.js @@ -315,6 +315,45 @@ describe("spy", function () { } }); + it("counts with combination of withArgs arguments and order of calling withArgs", function () { + var object = { + f1: function () {}, + f2: function () {} + }; + + // f1: the order of withArgs(1), withArgs(1, 1) + var spy1 = createSpy(object, "f1"); + assert.equals(spy1.callCount, 0); + assert.equals(spy1.withArgs(1).callCount, 0); + assert.equals(spy1.withArgs(1, 1).callCount, 0); + + object.f1(); + object.f1(1); + object.f1(1, 1); + object.f1(1, 2); + + assert.equals(spy1.callCount, 4); + assert.equals(spy1.withArgs(1).callCount, 3); + assert.equals(spy1.withArgs(1, 1).callCount, 1); + assert.equals(spy1.withArgs(1, 2).callCount, 1); + + // f2: the order of withArgs(1, 1), withArgs(1) + var spy2 = createSpy(object, "f2"); + assert.equals(spy2.callCount, 0); + assert.equals(spy2.withArgs(1, 1).callCount, 0); + assert.equals(spy2.withArgs(1).callCount, 0); + + object.f2(); + object.f2(1); + object.f2(1, 1); + object.f2(1, 2); + + assert.equals(spy2.callCount, 4); + assert.equals(spy2.withArgs(1).callCount, 3); + assert.equals(spy2.withArgs(1, 1).callCount, 1); + assert.equals(spy2.withArgs(1, 2).callCount, 1); + }); + describe(".named", function () { it("sets displayName", function () { var spy = createSpy(); diff --git a/test/stub-test.js b/test/stub-test.js index 8660c9f5a..2e3cf361f 100644 --- a/test/stub-test.js +++ b/test/stub-test.js @@ -94,6 +94,19 @@ describe("stub", function () { assert(callback.called); }); + it("should works with combination of withArgs arguments", function () { + var stub = createStub(); + stub.returns(0); + stub.withArgs(1, 1).returns(2); + stub.withArgs(1).returns(1); + + assert.equals(stub(), 0); + assert.equals(stub(1), 1); + assert.equals(stub(1, 1), 2); + assert.equals(stub(1, 1, 1), 2); + assert.equals(stub(2), 0); + }); + describe(".returns", function () { it("returns specified value", function () { var stub = createStub.create();