TypeScript - Hvordan type-mocke med vitest?
Jeg vil mocke fs med vitest, og jeg gjør det med suksess, men jeg bruker any for å gjøre det. Vurder
import { promises as fs } from 'fs';
vi.mock('fs')
it('can mock', async () => {
// Property 'mockResolvedValue' does not exist on type '{ ......
fs.readdir.mockResolvedValue([])
// ok but can we do better?
(fs.readdir as any).mockResolvedValue([])
})
Hvordan kan jeg forbedre skrivingen her?
Svar #1
Som @jonrsharpe påpekte i kommentaren, kan vi bruke denne syntaksen:
import { promises as fs } from 'fs';
vi.mock('fs')
it('can mock', async () => {
vi.mocked(fs.readdir).mockResolvedValue([])
})
Svar #2
Jeg løser dette på følgende måte
import { vi } from 'vitest'
import axios from 'axios';
// mock library
vi.mock('axios')
// mock library methods
const mockedAxios = vi.mocked(axios, true)
Du kan se dette i vitest-DOKS https://vitest.dev/guide/mocking.html#mocking
