Javascript 如何嘲笑mongoose模式方法?
我试图测试一个端点,它有一些中间件“getFromRequestLean”。我正确地模拟了这一点,但当我将Javascript 如何嘲笑mongoose模式方法?,javascript,jestjs,Javascript,Jestjs,我试图测试一个端点,它有一些中间件“getFromRequestLean”。我正确地模拟了这一点,但当我将'.User'添加到require函数的末尾时,它会返回下面列出的错误。我必须这样做,因为这是一个模式方法。我做错了什么?如何正确模拟此模式方法 const User = require('../models/user').User router.get('/banner', User.getFromRequestLean, function (request, res) { }) //
'.User'
添加到require函数的末尾时,它会返回下面列出的错误。我必须这样做,因为这是一个模式方法。我做错了什么?如何正确模拟此模式方法
const User = require('../models/user').User
router.get('/banner', User.getFromRequestLean, function (request, res) {
})
// model user:
module.exports = {
User: mongoose.model('User', userSchema),
}
这个问题是我可以通过以下方式来模拟的:
const User = require('../models/user').User
const getFromRequestLean = require('../models/user').getFromRequestLean
jest.mock('../models/User', () => ({
getFromRequestLean: jest.fn(),
User: jest.fn()
}))
describe('validate banner endpoint', () => {
getFromRequestLean.mockImplementation((req, res, next) => {
req.user = { some hash attributes... }
next()
})
})
我正在获取
路由。get()需要一个回调函数,但得到了一个[object Undefined]
我在一个类似的案例中挣扎了很多,最后使用了jest.spyOn:
jest.spyOn(require('../models/user'),'getFromRequestLean')
.mockImplementation(()=>(请求、恢复、下一步:任何)=>下一步({
//你的代码在这里
})
)