Closed
Description
Versions
- NodeJS: 12.20.1
- mongodb-memory-server-*: 6.9.3
- mongodb: 3.6.2
- mongoose: 5.11.13
- system: Windows 10
package: mongo-memory-server
What is your question?
"mongodb" connection fails on docker (CI) pipeline, however it works well on local. Below is the error it shows when pipeline fails. It should create in-memory mongodb server and execute the unit tests on that. I tried searching similar issue, but I didn't find anything apart from this. I did the suggestions provided in that issue but it didn't help. Can someone please shed some light on this? I am baddly stuck due to this.
vue-cli-service test:unit --expand --no-cache --coverage
console.warn node_modules/mongodb-memory-server-core/lib/MongoMemoryServer.js:143
Starting the instance failed, please enable debug for more infomation
console.error __tests__/routes/ser-data.spec.js:40
MongoDB connection FAIL
2021-02-14T18:06:15.049Z bff-ser:ser-data:error Insert ser info MongooseError: Operation `ser_collection.insertOne()` buffering timed out after 10000ms
2021-02-14T18:06:15.056Z bff-ser:ser-data:error Get SER data MongooseError: Operation `ser_collection.find()` buffering timed out after 10000ms
● Cannot log after tests are done. Did you forget to wait for something async in your test?
Attempted to log "response.statusCode : 500".
45 | var bodyData = mockData.ser_test_SingleData;
46 | var response = await request.post(`/ser/ser-data/`).send(bodyData);
> 47 | console.log("response.statusCode : " + response.statusCode);
| ^
48 | expect(response.statusCode).toBe(200);
49 | expect(response.body.name).toBe("SERProject1");
50 | });
at console.log (node_modules/@vue/cli-plugin-unit-jest/node_modules/@jest/console/build/CustomConsole.js:183:10)
at Object.<anonymous> (__tests__/routes/ser-data.spec.js:47:13)
FAIL __tests__/routes/ser-data.spec.js (12.462s)
bff-ser
✕ bff-ser /ser/ser-data/ POST query (11ms)
✕ get SERs (10052ms)
● bff-ser › bff-ser /ser/ser-data/ POST query
spawn /builds/mainstream-eng-cloud/bff-ser/node_modules/.cache/mongodb-memory-server/mongodb-binaries/4.0.14/mongod ENOENT
● bff-ser › get SERs
expected "Content-Type" matching /json/, got "text/plain; charset=utf-8"
at Test.Object.<anonymous>.Test._assertHeader (node_modules/supertest/lib/test.js:245:14)
Ran all test suites.
console.warn node_modules/@sentry/node/dist/integrations/onunhandledrejection.js:63
This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason:
console.error node_modules/@sentry/node/dist/integrations/onunhandledrejection.js:64
Error: Caught error after test environment was torn down
expect(received).toBe(expected) // Object.is equality
Expected: 200
Received: 500
Below is my Code :
process.env.NODE_ENV = "test";
const app = require("../../app"); // Link to your server file
const supertest = require("supertest");
const request = supertest(app);
const mongoose = require("mongoose");
const mockData = require("../helpers/data.json");
const { MongoMemoryServer } = require("mongodb-memory-server");
const mongod = new MongoMemoryServer();
//jasmine.DEFAULT_TIMEOUT_INTERVAL = 600000;
describe("cff-ser", () => {
beforeAll(async () => {
try {
jest.setTimeout(30 * 1000);
const uri = await mongod.getUri();
const mongooseOpts = {
useNewUrlParser: true,
useUnifiedTopology: true
};
if (mongoose.connection.name != "") await mongoose.connection.close();
mongoose.connect(uri, mongooseOpts);
mongoose.Promise = global.Promise;
var db = mongoose.connection;
db.on(
"error",
console.error.bind(console, "DocumentDB connection error:")
);
db.once("open", function () {
// we're connected!
console.log("db object" + db);
});
} catch (error) {
console.error("MongoDB connection FAIL");
}
});
it("cff-ser /ser/ser-data/ POST query", async () => {
var bodyData = mockData.ser_test_SingleData;
var response = await request.post(`/ser/ser-data/`).send(bodyData);
console.log("response.statusCode : " + response.statusCode);
expect(response.statusCode).toBe(200);
expect(response.body.name).toBe("serProject1");
});
afterAll(async () => {
await mongoose.connection.dropDatabase();
await mongoose.connection.close();
await mongoose.disconnect();
await mongod.stop();
});
});