AssertionError:预期的不确定值等于201

时间:2019-04-05 15:16:12

标签: node.js express mocha chai node-postgres

我有一个后期用户API(数据库是Postgres),它在没有错误的邮递员上也能很好地工作,我的bodyparserapp.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)
                });
            }
        }
    });


};

2 个答案:

答案 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)