javascript - Hvordan konfigurerer man jest-mongodb(@shelf/jest-mongodb) i et typescript-node projekt?


Jeg arbejder på integrationstest, så det at hente data fra databasen gør testcases-udførelsen langsommere. Prøvede med jest-mongodb for at opsætte en midlertidig database, men kunne ikke finde en ordentlig dokumentation for opsætning af jest-mongodb i et TypeScript-NodeJS-projekt. Venligst hjælp mig med at løse dette problem.

test.ts (database konfigurationsfil baseret på denne testsuites forbindelse til database)

export default {    
    jwtPrivateKey: 'secretkey',
    // Testing Database configuration
    MongoDB: {
        dbConfig: {
            user: 'user name',
            host: 'some host',
            port: 'some port',
            authMechanism: 'some mechanism',
            authSource: 'access level',
            dbName: 'database name',
            metadata: 'initializer'
        }
    }
};

Svar #1

Opret filen: typings/global.d.ts:

declare namespace NodeJS {
  export interface Global {
    __MONGO_URI__: string;
  }
}

Så, i din tsconfig.json:

{
  "compilerOptions": { ... },
  "include": ["./src/**/*", "./typings/*"]
}

Svar #2

En måde at have denne opsætning på er som følger:

Konfigurer Jest med TypeScript via Babel:

yarn add --dev babel-jest @babel/core @babel/preset-env @babel/preset-typescript

Så vil du i din Babel-konfiguration have:

// babel.config.js
 module.exports = {
  presets: [
    ["@babel/preset-env", { targets: { node: "current" } }],
    "@babel/preset-typescript"
  ]
};

Du kan finde dokumentationen her Jest TypeScript-support via Babel

Og til sidst tilføj @shelf/jest-mongodb til din jest.config.js

// jest.config.js
module.exports = {
  preset: "@shelf/jest-mongodb",
  verbose: true
};

Nu er du klar til at gå i gang. I din testfil vil du have adgang til test-database-URL'en gennem:

process.env.MONGO_URL

Eller

const globalAny: any = global;
globalAny.__MONGO_URI__

Relaterede artikler