`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.