【发布时间】:2019-04-26 01:26:36
【问题描述】:
我正在用户 API 上尝试 TDD 方法。我想为我的功能集成单元测试:userRegister 和 userLogin
这是我的 app.js
'use strict'
const express = require('express')
const bodyParser = require('body-parser')
const passport = require('passport')
const users = require('../routes/users')
const app = express()
const port = 5000
app.get('/', (req, res) => {
res.send({ msg: 'Test' })
})
//BodyParser Middleware
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())
//Passport middleware
app.use(passport.initialize())
//Initialize Routes
app.use('/api/users', users)
//Export app
module.exports = app
这是我的 userController.js:
'use strict'
const express = require('express')
const bcrypt = require('bcryptjs')
const jwt = require('jsonwebtoken')
const keys = require('../../../../config/keys')
const passport = require('passport')
const status = require('http-status-codes')
const User = require('../../models/User')
module.exports.test = (req, res) => {
res.json({msg: 'Users works'})
}
module.exports.userRegister = (req, res) => {
User.findOne({ email: req.body.email})
.then(user => {
if(user)
return res.status(400).json({ userEmailerror: 'Email already
exists'})
else{
const newUser = new User({
name: req.body.name,
email: req.body.email,
password: req.body.password
})
newUser.save()
.then(user => res.json(user))
.catch(err => console.log(err))
}
})
}
这是我的 userController.test.js
'use strict'
const mongoose = require('mongoose')
const testUserDB = require('../../../config/keys').testUsersMongURI
mongoose.connect(testUserDB)
const userController = require('../modules/controllers/userController')
const User = require('../models/User')
describe('register new user', () => {
test('succesfully register a valid user', () => {
const newUser = new User({
name: 'test',
email: 'test@gmail.com',
password: 'test123'
})
const req = {body: {newUser}}
userController.userRegister(req).then(user => {
expect(user.name).toBe('test')
expect(user.email).toBe('test@gmail.com')
})
})
})
我用来运行测试的脚本是:
"test": "jest --coverage",
我是 Javascript 和完整堆栈的新手,我收到的错误让我感到困惑
RUNS src/user/__tests__/userController.test.js
FAIL src/user/__tests__/userController.test.js
register new user
× succesfully register a valid user (19ms)
● register new user › succesfully register a valid user
TypeError: Cannot read property 'then' of undefined
16 | })
17 | const req = {body: {newUser}}
> 18 | userController.userRegister(req).then(user => {
| ^
19 | expect(user.name).toBe('test')
20 | expect(user.email).toBe('test@gmail.com')
21 |
at Object.test (src/user/__tests__/userController.test.js:18:3)
感谢您的帮助!
【问题讨论】:
-
测试告诉你正确的事情:
userController.userRegister实际上并没有返回任何东西。 -
我尝试以各种方式返回,但我得到了同样的错误。
标签: javascript express mongoose tdd jestjs