节点测试未运行mongoose函数



我有一个控制器,我想测试

// user model
const userModel = require('../models/user')
// get user model from handler
const User = userModel.User
function index(req, res) {
User.find(function(err, users) {
if (err) console.log(err)
console.log('debug')
res.render('../views/user/index', {
title: 'User index',
users: users
})
})
}
module.exports = {
index
}

使用以下代码

// dependencies
const sinon = require('sinon')
// controller to be tested
const controller = require('../controllers/user')
// get user test
describe('test user index', function() {
it ('should return users', function() {
var req = {}
var res = {
render: function() {
sinon.spy()
}
}
controller.index(req, res)
})
})

当我运行测试时,它不执行console.log('debug'),这在我看来表明测试不能运行User.find()函数。如有任何帮助,我们将不胜感激。

作为一个临时解决方案,您可以在文件顶部包含DB连接字符串。说明:我猜您的控制器是应用程序的一部分,所以它在init上连接到DB。然而,这里测试的是一个独立的控制器,因此DB连接还没有初始化。这是一个快速的解决方案,有关正确的方法,请参阅官方文档

最新更新