jestjs - Hvordan kan jeg mocke en TypeScript enum i mine Jest enhedstests?
Jeg vil mocke en enum i mine enhedstests. Min enum ser sådan ud:
enum OriginalEnum {
START = 'start',
EXPORT = 'export',
SEARCH = 'search'
END = 'end'
}
Værdien START forbliver altid på plads, ligesom END-værdien, men de mellemliggende enum-muligheder ændrer sig over tid. De repræsenterer "nye" funktioner, der fremhæves. Efter et stykke tid kan en eksisterende enum-mulighed fjernes og erstattes af en anden.
Det, jeg ønsker, er at kunne teste, at de klasser, der arbejder med denne enum, hopper frem og tilbage korrekt, uden at jeg hele tiden skal opdatere mine enhedstest, hver gang en af de mellemliggende enum-muligheder tilføjes/fjernes.
Så mine tests skal bruge en anden enum, som ser sådan ud:
enum MockedEnum {
START = 'start',
NAME_OF_FIRST = 'nameOfFirst',
NAME_OF_SECOND = 'nameOfSecond',
END = 'end'
}
Svar #1
Løsningen, som jeg fandt, bygger på dette stykke kode:
jest.mock('./../../models/original-enum.ts', () => ({
OriginalEnum: jest.requireActual('./../mocks/mocked-enum').MockedEnum
}));
Når det sættes øverst i en enhedstestfil, sætter det indholdet af den oprindelige enum lig med den mockede enum, men kun for den testfil.
Du kan stadig importere det mockede enum ved at bruge import { MockedEnum } from './../mocks/mocked-enum', så du kan arbejde med de mockede enum-muligheder inden for specifikke tests.
