GithubHelp home page GithubHelp logo

Comments (6)

chanced avatar chanced commented on September 3, 2024 7

Yea. You should be able to, I believe. mongoSetup is just the variable name I assigned to require'@shelf/jest-mongodb/setup') which is the default export of https://github.com/shelfio/jest-mongodb/blob/master/setup.js#L10

Given your initial function, it would look like:

const mongoSetup = require('@shelf/jest-mongodb/setup'); 

module.exports = async function globalSetup() {
  await mongoSetup();
  // process.env.MONGO_URL is now set by
  // https://github.com/shelfio/jest-mongodb/blob/fcda766bfa433644a7383993467ccaa06dfea28b/setup.js#L26
  await mongoose.connect(process.env.MONGO_URL, {
    useNewUrlParser: true,
    useUnifiedTopology: true,
    useCreateIndex: true,
    useFindAndModify: false,
  });
};

from jest-mongodb.

RashiqAzhan avatar RashiqAzhan commented on September 3, 2024 5

I did as follows, but I am having trouble connecting to the database from my test files.

Here are the relevant files with their code.
jest.setup.js

import mongoose from "mongoose";

const mongoSetup = require("@shelf/jest-mongodb/setup");

module.exports = async () => {
  await mongoSetup();

  global.__DB__await = mongoose
    .connect(process.env.MONGO_URL, {
      useNewUrlParser: true,
      useCreateIndex: true,
      useUnifiedTopology: true,
      useFindAndModify: false,
    })
    .then(null, (err) => {
      console.log(
        `In-memory mongodb instance failed to initialize. Error: ${err}`
      );
    });
};

jest.teadown.js

import mongoose from "mongoose";

module.exports = async () => {
  await mongoose.connection.close();
};

jest.config.js

module.exports = {
 preset: "@shelf/jest-mongodb",
 globalSetup: "<rootDir>/server/__tests__/__utils__/jest.setup.js",
 globalTeardown: "<rootDir>/server/__tests__/__utils__/jest.teardown.js",
}

None of my tests that require a connection to mongodb to run successfully and pass.
Running npm run test -- --detectOpenHandles reveals the following errors.

●  TCPSERVERWRAP

710 |       };
711 |       let response = await request(app)
> 712 |         .post("/api/users")
|          ^
713 |         .send(payload)
714 |         .set("Accept", "application/json");
715 |       expect(response.statusCode).toBe(200);

at Test.serverAddress (node_modules/supertest/lib/test.js:48:35)
at new Test (node_modules/supertest/lib/test.js:34:14)
at Object.post (node_modules/supertest/index.js:28:14)
at server/__tests__/controllers/user.controller.test.js:712:10

All tests exit with TCPSERVERWRAP. npm run test is test: "jest" in the package.json file.

I have tried the block of async code in the jest.setup.js and jest.teadown.js files in a beforeAll() and afterAll() embedded into each the test files and it works. All tests pass when the db connection originates from the test files themselves.

Any guidance is highly appreciated.

from jest-mongodb.

chanced avatar chanced commented on September 3, 2024

This is achievable by calling setup directly:

const mongoSetup = require('@shelf/jest-mongodb/setup');
module.exports = async config => {
  await mongoSetup();
  const url = process.env.MONGO_URL;
  if(url == null) {
    throw new Error("MONGO_URL was not set");
  }
  // connect
}

from jest-mongodb.

justin-schroeder avatar justin-schroeder commented on September 3, 2024

Confused @chanced. You're saying you can do this in jest’s globalSetup? Where do you use the mongoSetup() you described? Like I said in the original post, I'm able to connect just fine for each individual test suite, just not once globally which would be really nice.

from jest-mongodb.

finalight avatar finalight commented on September 3, 2024

Yea. You should be able to, I believe. mongoSetup is just the variable name I assigned to require'@shelf/jest-mongodb/setup') which is the default export of https://github.com/shelfio/jest-mongodb/blob/master/setup.js#L10

Given your initial function, it would look like:

const mongoSetup = require('@shelf/jest-mongodb/setup'); 

module.exports = async function globalSetup() {
  await mongoSetup();
  // process.env.MONGO_URL is now set by
  // https://github.com/shelfio/jest-mongodb/blob/fcda766bfa433644a7383993467ccaa06dfea28b/setup.js#L26
  await mongoose.connect(process.env.MONGO_URL, {
    useNewUrlParser: true,
    useUnifiedTopology: true,
    useCreateIndex: true,
    useFindAndModify: false,
  });
};

i still have the same error; can't connect to the database and then timeout error

from jest-mongodb.

khivi avatar khivi commented on September 3, 2024

Not clear if this will work due to https://mongoosejs.com/docs/jest.html#globalsetup-and-globalteardown

from jest-mongodb.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.