@@ -19,21 +19,27 @@ Here's an example of the GlobalSetup script
19
19
20
20
``` js
21
21
// setup.js
22
+ const path = require (' path' );
23
+
24
+ const fs = require (' fs' );
25
+
22
26
const MongodbMemoryServer = require (' mongodb-memory-server' );
23
27
24
- const MONGO_DB_NAME = ' jest ' ;
25
- const mongod = new MongodbMemoryServer.default ({
26
- instance : {
27
- dbName : MONGO_DB_NAME ,
28
- },
29
- binary : {
30
- version : ' 3.2.19 ' ,
31
- } ,
32
- }) ;
28
+ const globalConfigPath = path . join ( __dirname , ' globalConfig.json ' ) ;
29
+
30
+ const mongoServer = new MongodbMemoryServer.MongoMemoryServer ();
31
+
32
+ module . exports = async function () {
33
+ const mongoConfig = {
34
+ mongoDBName : ' jest ' ,
35
+ mongoUri : await mongoServer . getConnectionString () ,
36
+ } ;
33
37
34
- module .exports = function () {
38
+ // Write global config to disk because all tests run in different contexts.
39
+ fs .writeFileSync (mongoFileConfigPath, JSON .stringify (mongoConfig));
40
+
41
+ // Set reference to mongod in order to close the server during teardown.
35
42
global .__MONGOD__ = mongod;
36
- global .__MONGO_DB_NAME__ = MONGO_DB_NAME ;
37
43
};
38
44
```
39
45
@@ -43,6 +49,12 @@ Then we need a custom Test Environment for Mongo
43
49
// mongo-environment.js
44
50
const NodeEnvironment = require (' jest-environment-node' );
45
51
52
+ const path = require (' path' );
53
+
54
+ const fs = require (' fs' );
55
+
56
+ const globalConfigPath = path .join (__dirname , ' globalConfig.json' );
57
+
46
58
class MongoEnvironment extends NodeEnvironment {
47
59
constructor (config ) {
48
60
super (config);
@@ -51,8 +63,10 @@ class MongoEnvironment extends NodeEnvironment {
51
63
async setup () {
52
64
console .log (' Setup MongoDB Test Environment' );
53
65
54
- this .global .__MONGO_URI__ = await global .__MONGOD__ .getConnectionString ();
55
- this .global .__MONGO_DB_NAME__ = global .__MONGO_DB_NAME__ ;
66
+ const globalConfig = JSON .parse (fs .readFileSync (globalConfigPath, ' utf-8' ));
67
+
68
+ this .global .__MONGO_URI__ = globalConfig .mongoUri ;
69
+ this .global .__MONGO_DB_NAME__ = globalConfig .mongoDBName ;
56
70
57
71
await super .setup ();
58
72
}
0 commit comments