Skip to content

Calling replaceGetter invokes the original function #2589

@egmacke

Description

@egmacke

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions