Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何嘲笑mongoose模式方法?_Javascript_Jestjs - Fatal编程技术网

Javascript 如何嘲笑mongoose模式方法?

Javascript 如何嘲笑mongoose模式方法?,javascript,jestjs,Javascript,Jestjs,我试图测试一个端点,它有一些中间件“getFromRequestLean”。我正确地模拟了这一点,但当我将'.User'添加到require函数的末尾时,它会返回下面列出的错误。我必须这样做,因为这是一个模式方法。我做错了什么?如何正确模拟此模式方法 const User = require('../models/user').User router.get('/banner', User.getFromRequestLean, function (request, res) { }) //

我试图测试一个端点,它有一些中间件“getFromRequestLean”。我正确地模拟了这一点,但当我将
'.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(()=>(请求、恢复、下一步:任何)=>下一步({
//你的代码在这里
})
)