-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Closed
Labels
p3-minor-bugAn edge case that only affects very specific usage (priority)An edge case that only affects very specific usage (priority)
Description
Describe the bug
I was reviewing #7801 and I realized we have this behavior. This looks like something a little unexpected in terms of mockRestore. Creating a repro just in case for the record, but it might not be possible to deal with this accurately.
import { test, vi, expect } from 'vitest';
test('repro', () => {
class Foo {
f() {
return 'original';
}
}
// initially there's no own properties
const foo = new Foo();
expect(foo.f()).toMatchInlineSnapshot(`"original"`);
expect(Object.getOwnPropertyDescriptors(foo)).toMatchInlineSnapshot(`{}`);
// mocked function in own property
const spy = vi.spyOn(foo, 'f').mockImplementation(() => 'mocked');
expect(foo.f()).toMatchInlineSnapshot(`"mocked"`);
expect(Object.getOwnPropertyDescriptors(foo)).toMatchInlineSnapshot(`
{
"f": {
"configurable": true,
"enumerable": false,
"value": [MockFunction f] {
"calls": [
[],
],
"results": [
{
"type": "return",
"value": "mocked",
},
],
},
"writable": true,
},
}
`);
// probably original prototype method is not moved to own property
spy.mockRestore();
expect(foo.f()).toMatchInlineSnapshot(`"original"`);
expect(Object.getOwnPropertyDescriptors(foo)).toMatchInlineSnapshot(`
{
"f": {
"configurable": true,
"enumerable": false,
"value": [Function],
"writable": true,
},
}
`);
});Reproduction
https://stackblitz.com/edit/vitest-dev-vitest-yrcblgdr?file=test%2Frepro.test.ts
System Info
System:
OS: Linux 5.0 undefined
CPU: (8) x64 Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz
Memory: 0 Bytes / 0 Bytes
Shell: 1.0 - /bin/jsh
Binaries:
Node: 18.20.3 - /usr/local/bin/node
Yarn: 1.22.19 - /usr/local/bin/yarn
npm: 10.2.3 - /usr/local/bin/npm
pnpm: 8.15.6 - /usr/local/bin/pnpm
npmPackages:
@vitest/ui: latest => 3.1.1
vite: latest => 6.2.5
vitest: latest => 3.1.1Used Package Manager
npm
Validations
- Follow our Code of Conduct
- Read the Contributing Guidelines.
- Read the docs.
- Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
- Check that this is a concrete bug. For Q&A open a GitHub Discussion or join our Discord Chat Server.
- The provided reproduction is a minimal reproducible example of the bug.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
p3-minor-bugAn edge case that only affects very specific usage (priority)An edge case that only affects very specific usage (priority)