我有一个后期用户API(数据库是Postgres),它在没有错误的邮递员上也能很好地工作,我的bodyparser
,app.js
中有.type('json')
,但是我的测试返回了{ {1}} 1,我console.log(res),它是未定义的。这是我的代码,我的API首先出现,然后是mocha和chai测试。
AssertionError: expected undefined to equal 20
exports.post_user = (req, res) => {
const {error} = validateUser(req.body);
if (error) return res.status(422).json({ message: error.details[0].message });
if (!req.file) return res.send('Please upload a file');
bcrypt.hash(req.body.password, 10, async (err, hash) => {
if (err) {
res.status(500).json({
message: 'retype password',
error: err
});
} else {
const text = `INSERT INTO
users(id, firstName, lastName, otherName, email, phoneNumber, userName, isAdmin, password, userImage, createdOn)
VALUES($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11)
returning *`;
const values = [
uuidv4(),
req.body.firstName,
req.body.lastName,
req.body.otherName,
req.body.email,
req.body.phoneNumber,
req.body.userName,
req.body.isAdmin,
hash,
req.file.path,
moment(new Date())
];
try {
const { rows } = await db.query(text, values);
const token = jwt.sign({
email: rows[0].email,
userId: rows[0].id
}, process.env.SECRET,
{
expiresIn: '24h'
});
return res.status(201).json({
message: 'user created successfully',
users: rows[0],
token: token,
request: {
type: 'GET',
url: 'http://localhost:3000/api/v1/user/' + rows[0].id
}
});
} catch (err) {
return res.status(400).json({
message: 'an error occur',
error: console.error(err)
});
}
}
});
};
答案 0 :(得分:0)
从您的控制器返回的结果来看,第expect (body.status).to.be.equals(201)
行是错误的。您的响应主体没有状态。尝试res.should.have.status(201)
或expect (res.status).to.equal(201)
答案 1 :(得分:0)
代码为(201)
的响应是一种特殊的响应,因为它不允许任何响应主体,如果您希望有一个主体,则可以只使用200 (as a successful action)