【发布时间】:2019-10-07 08:46:09
【问题描述】:
我有以下快递路线:
app.route(`api/project`).post((req, res) => createProject(req, res))
在之前的代码中,我创建了将 Mongoose 附加到 req 对象的中间件,因此可以在 createProject 中使用 req.mongoose 调用它。
问题是我不知道如何在单元测试中模拟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 对象被传递之前模拟它?
【问题讨论】:
-
如何在测试中调用
createProject控制器?你能和我们分享一下测试和createProject代码吗? -
可能是这样的? npmjs.com/package/mock-req
标签: node.js express mongoose jestjs