vitest - Hur man mockar ett TypeScript-gränssnitt för att testa vissa användningsfall i ett bibliotek
Jag skulle vilja ha ett gränssnitt som endast är fyllt för testmiljön.
Låt säga att jag har detta gränssnitt i lib-kodbiblioteket
// file MyInterface.ts
export interface MyInterface {}
Och senare i slutanvändarens kodbas så att han kan fylla i MyInterface på detta sätt
// in the library user code base
declare module 'my-lib/MyInterface'
{
interface MyInterface
{
user-property: unknown // some type here
}
}
Jag behöver testa typer i biblioteket som använder Myinterface, och för att göra det kan jag behöva testa vissa nycklar och värden kopplade till den nyckeln som inte är relevanta för biblioteket men som behöver några tester
Jag vet att jag kan definiera ett gränssnitt _TestMyInterface som utökar MyInterface och som inte exporteras av biblioteket, men jag kommer också att behöva definiera om alla tester som använder MyInterface för att använda _TestMyInterface-gränssnittet istället, och detta kommer att kräva att jag duplicerar hela kodbasen. Till exempel:
import {MyInterface} from './MyInterface'
import {_TestMyInterface} from './_TestMyInterface'
export type TypeThatUseMyInterface<K extends keyof MyInterface> = K // do something with K
type _TestTypeThatUseMyInterface<K extends keyof _TestMyInterface> = K // do something with K to allow testing for specific values that are not relevant to the library but might be relevant to the end user.
Finns det ett bättre sätt att uppnå detta och göra en mock av MyInterface endast för teständamål?
Jag använder vitest för min testmiljö