У меня есть следующий экспресс-маршрут:
app.route(`api/project`).post((req, res) => createProject(req, res))
В предыдущем коде я создал промежуточное программное обеспечение для присоединения Mongoose к объекту req
, чтобы его можно было вызывать с помощью req.mongoose
внутри createProject
.
Проблема в том, что я не знаю, как издеваться req.mongoose
при использовании в модульных тестах.
Я попытался создать ручной макет createProject
(ниже), который вызывал бы действительный createProject
с req.mongoose
, установленным в заглушку, но это вызвало ошибку StackOverflow.
// __mocks__/createProject.js
const { MongoMemoryServer } = require('mongodb-memory-server')
const realCreateProject = require('../createProject')
const mongoose = require('mongoose')
const createProject = async (req, res) => {
const mongoServer = new MongoMemoryServer()
const mongoUri = await mongoServer.getConnectionString()
const options = { useNewUrlParser: true }
await mongoose.connect(mongoUri, options, err => {
if (err) console.error(`ERROR: beforeAll - ${err}`)
})
req.mongoose = mongoose
realCreateProject(req, res)
}
Итак, как бы вы смоделировали объект req
на маршруте до того, как он пройдет по линии?