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__
