Describe the bug
vitest@4+ breaks the TS types of .mockImplementation()/.mockResolvedValue()/etc. for static class methods of vi.mocked(MyClass). This was working in vitest@3
(tests are passing, but TS is not happy)
// Foo.ts
export class Foo {
public static getBar(): string {
return 'bar';
}
}
// Foo.test.ts
import { vi, test, expect } from 'vitest';
import { Foo } from './Foo.js';
vi.mock('./Foo');
const mockedFoo = vi.mocked(Foo, { partial: true });
test('test', () => {
mockedFoo.getBar.mockImplementation(() => 'mocked bar');
expect(mockedFoo.getBar()).toBe('mocked bar');
});
error TS2339: Property 'mockImplementation' does not exist on type ...
Reproduction
Repro StackBlitz link
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: 20.19.1 - /usr/local/bin/node
Yarn: 1.22.19 - /usr/local/bin/yarn
npm: 10.8.2 - /usr/local/bin/npm
pnpm: 8.15.6 - /usr/local/bin/pnpm
npmPackages:
vite: ^7.2.6 => 7.2.6
vitest: ^4.0.15 => 4.0.15
Used Package Manager
npm
Validations
Describe the bug
vitest@4+breaks the TS types of.mockImplementation()/.mockResolvedValue()/etc. for static class methods ofvi.mocked(MyClass). This was working invitest@3(tests are passing, but TS is not happy)
Reproduction
Repro StackBlitz link
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: 20.19.1 - /usr/local/bin/node Yarn: 1.22.19 - /usr/local/bin/yarn npm: 10.8.2 - /usr/local/bin/npm pnpm: 8.15.6 - /usr/local/bin/pnpm npmPackages: vite: ^7.2.6 => 7.2.6 vitest: ^4.0.15 => 4.0.15Used Package Manager
npm
Validations