mocha.js - Hur fungerar modulupplösning i TypeScript för globala värden (dvs. describe)?


När man använder jest på egen hand upptäcktes motsvarande TypeScript-definitioner direkt efter att ha installerat @types/jest.

Jag började då implementera integrationstester med Cypress. Eftersom Cypress använder Mocha, ser jag nu felaktigt referenser av Mocha-typer inuti mina Jest-tester. Faktum är att ett antal överlappande typdefinitioner upptäcks. Till exempel verkar describe vara definierad i ett antal filer. Jag försökte till och med implementera min egen typning för describe som pekar på Jest. Tyvärr "vinner" varje enskild gång Mocha.

Hur kan jag specificera ordningen på prioritet när flera definitioner upptäcks av TypeScript-kompilatorn?

Min tsconfig.json ser ut så här:

{
    "compilerOptions": {
        "target": "es5",
        "lib": [ "dom", "dom.iterable", "esnext" ],
        "types": [ "jest", "mocha" ],
        "allowJs": true,
        "skipLibCheck": true,
        "esModuleInterop": true,
        "allowSyntheticDefaultImports": true,
        "strict": true,
        "strictNullChecks": true,
        "forceConsistentCasingInFileNames": true,
        "module": "esnext",
        "moduleResolution": "node",
        "resolveJsonModule": true,
        "isolatedModules": false,
        "noEmit": true,
        "jsx": "preserve"
    },
    "include": [ "src/**/*" ]
}

Men jag försökte också följande:

{
    "compilerOptions": {
        "target": "es5",
        "lib": [ "dom", "dom.iterable", "esnext" ],
        "typeRoots": [ "./node_modules/@types", "./src/types" ],
        "allowJs": true,
        "skipLibCheck": true,
        "esModuleInterop": true,
        "allowSyntheticDefaultImports": true,
        "strict": true,
        "strictNullChecks": true,
        "forceConsistentCasingInFileNames": true,
        "module": "esnext",
        "moduleResolution": "node",
        "resolveJsonModule": true,
        "isolatedModules": false,
        "noEmit": true,
        "jsx": "preserve"
    },
    "include": [ "src/**/*" ]
}

I båda fallen väljs mocha. Hur kan jag byta typ för "describe & co." till jest?

Svar #1

CompilerOptions.types låter dig begränsa de typningar du vill ha tillgängliga i omfånget (mappen)

Du kan försöka följande: Skapa en top-nivå tsconfig.json med CompilerOptions.types=[]

Inuti testmappen skapa tsconfig.json och välj jest-typningar CompilerOptions.types=['jest']

På samma sätt, inuti integrationsmappen, skapa tsconfig.json och välj mocha-typningar CompilerOptions.types=['mocha']

Relaterade artiklar