Describe the bug
Using sinon.replaceGetter correctly replaces the getter, but in the process it appears to invoke the original get function.
This causes issues when the getter is non-trivial and relies on class state which may not be correctly setup in a test environment.
To Reproduce
Steps to reproduce the behavior:
- Define getter with side effects
- call
sinon.replaceGetter
- Observe side effects happening
Reproduction here: https://replit.com/@egmacke/Sinon-replaceGetter-bug
Expected behavior
Expect that the getter is replaces without invoking the original implementation.
Context (please complete the following information):
- Sinon version : 17.0.1
- Runtime: node
- Output of
npx envinfo --browsers --binaries:
~/Sinon-replaceGetter-bug$ npx envinfo --browsers --binaries
Binaries:
Node: 18.12.1 - /nix/store/dj805sw07vvpbxx39c8g67x8qddg0ikw-nodejs-18.12.1/bin/node
Yarn: 1.22.19 - /nix/store/zdcnqq55qi214j46zgw2qa1jp4dpdf2m-yarn-1.22.19/bin/yarn
npm: 8.19.2 - /nix/store/dj805sw07vvpbxx39c8g67x8qddg0ikw-nodejs-18.12.1/bin/npm
Describe the bug
Using
sinon.replaceGettercorrectly replaces the getter, but in the process it appears to invoke the originalgetfunction.This causes issues when the getter is non-trivial and relies on class state which may not be correctly setup in a test environment.
To Reproduce
Steps to reproduce the behavior:
sinon.replaceGetterReproduction here: https://replit.com/@egmacke/Sinon-replaceGetter-bug
Expected behavior
Expect that the getter is replaces without invoking the original implementation.
Context (please complete the following information):
npx envinfo --browsers --binaries: