interface 型で返る vi.fn は vi.mocked で型付けして操作する
TypeScript
テスト
Vitest
Service factory などが repository を interface 型で返す場合、実体のメソッドが vi.fn でも TypeScript 上は通常関数として見えるため、mockResolvedValueOnce などの mock API が直接使えない。この場合は vi.spyOn で包み直すのではなく、const mockedMethod = vi.mocked(repository.method) のように Vitest mock として型付けしてから mockResolvedValueOnce や呼び出し検証を行うと、実体の vi.fn を保ったまま型チェックも通せる。