GitHub - ec965/vitest-mongodb: Run your tests with Vitest and MongoDB Memory ser...
source link: https://github.com/ec965/vitest-mongodb
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
vitest-mongodb
Run your tests with Vitest and MongoDB Memory server.
Usage
An example project can be found at /example
.
- Create a setup file.
// ./setup/mongo-memory-server.ts
import { afterAll } from "vitest";
import { setup, teardown } from "vitest-mongodb";
beforeAll(async () => {
await setup();
});
afterAll(async () => {
await teardown();
});
- Include that setup file in your Vitest config.
// vitest.config.ts
import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
setupFiles: ["./setup/mongo-memory-server.ts"],
},
});
- Connect to the server in tests using the
globalThis.__MONGO_URI__
global variable.
import { MongoClient } from "mongodb";
import { it, expect } from "vitest";
it("connects to mongodb", () => {
expect(async () => {
const client = new MongoClient(globalThis.__MONGO_URI__);
try {
const db = client.db("test");
await db.command({ ping: 1 });
} finally {
await client.close();
}
}).not.toThrow();
});
Configuration
The setup function provides some configuration options.
Setup Options:
type Options =
| {
type?: "default";
serverOptions?: Partial<MongoMemoryServerOpts>;
}
| {
type: "replSet";
serverOptions?: Partial<MongoMemoryReplSetOpts>;
};
Example: create a ReplSet
// ./setup/mongo-memory-server.ts
import { afterAll } from "vitest";
import { setup, teardown } from "vitest-mongodb";
beforeAll(async () => {
await setup({ type: "replSet", serverOptions: { replSet: { count: 4 } } });
});
afterAll(async () => {
await teardown();
});
TypeScript
To get __MONGO_URI__
on your globalThis
object, add the follow file:
// test/global.d.ts
declare var __MONGO_URI__: string;
Comparison to jest-mongodb
These two packages are fairly similar with slightly different configuration.
jest-mongodb Options
The following is how to get the desired effect as jest-mongodb options.
useSharedDBForAllJestWorkers
: Run vitest with option--no-threads
so that the setup file is only called once.mongoURLEnvName
: No plans to implement.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK