sinonjs / sinon

Test spies, stubs and mocks for JavaScript.

Home Page:https://sinonjs.org/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

`returns` not override `callThrough`

rluvaton opened this issue · comments

Describe the bug
returns not override callThrough

To Reproduce
Run the following:

const sinon = require('sinon');
const assert = require('assert');
class A {
	fn() {
		return 1;
	}
}

const a = new A();

sinon.stub(a, 'fn').callThrough().returns(2);

assert.strictEqual(a.fn(), 2);
assert.strictEqual(a.fn(), 2);
assert.strictEqual(a.fn(), 2);
assert.strictEqual(a.fn(), 2);

Expected behavior
this function should return 2 without calling the original function

as resolves and throws does (and maybe even more)

Context (please complete the following information):
The reason I call callThrough is because I have a helper function that stub the function but keeping the result (I know you have spy but stub can provide both override and tracking) or if already stubbed does nothing (so there won't be an error for function already stubbed)

replacing returns with callsFake works as expected

  • Library version: 17.0.0
  • Environment: node

Thanks for the issue and the PR!

Closed as done

we don't have LTS releases :) It's just the next major version (which I am not sure when lands).

Anyway, at first I regarded this as a breaking change, but it's really just fixing a bug, so the new patch version is out now.