I am having issues with testing my nodejs app that has multiple connections to the DB.
I would like to run my test without creating any connections to the DB. However, since the individual connections are required in my model, it seems to be connecting to the DB even though it is not needed.
I am using jest with supertest for testing.
/mongodbConnection
const mongoose = require('mongoose');
const { MONGO_URI1, MONGO_URI2 } = require('../config');
const db1Connection = mongoose.createConnection(MONGO_URI1, {
useNewUrlParser: true,
useUnifiedTopology: true,
});
const db2Connection = mongoose.createConnection(MONGO_URI2, {
useNewUrlParser: true,
useUnifiedTopology: true,
});;
module.exports = {
db1Connection,
db2Connection,
};
/student.model
const { Schema, model } = require('mongoose');
const { db1Connection } = require('../mongodbConnection');
const studentSchema = new Schema(
{
studentId: { type: Number, required: true },
email: { type: String, required: true },
profileImage: { type: String, required: true },
},
{
collection: 'students',
timestamps: { updatedAt: 'lastModifiedTimeStamp' },
}
);
module.exports = db1Connection.model('StudentSchema', studentSchema);
/service
const Student = require('../models/student.model');
const getUnitOffer = async (params) => {
try {
let unitOffer = await UnitOffer.findOne({ ...params })
.populate('courseOffer')
.exec();
return unitOffer;
} catch (error) {
throw new Error('Cannot find Unit Offer');
}
};
So when I test the controller and mock the service, the error shows up that there is a need to connect to DB. However, I do not require that in my controller testing as I have mocked the service. So is there any way I can overcome this?
The tests works if i only make a single connection using mongoose.connect. However when I use the above code, it breaks the tests and asks for the env variables.
Aucun commentaire:
Enregistrer un commentaire