app.post 没有下一个(下一个应该是未定义的)

问题描述 投票:0回答:1

在我的routes.js 中我有:

app.post('/api/useraccounts', useraccountController.create);

在我的 useraccountController.js 中我有:

exports.create = function(req, res, next) {
var registerUseraccountViewModel = new RegisterUseraccountViewModel(req.body.firstName, req.body.lastName,
                                                                    req.body.email, req.body.password);
//Validation of parameters done inside viewmodel
if(registerUseraccountViewModel instanceof Error) {
    res.json(406, { error: registerUseraccountViewModel.message });
    if(next) next();
} else {
    useraccountBusinessLogic.create(registerUseraccountViewModel, function(err, data) {
        if(err) {
            res.json(400, { error: err.message });
        } else {
            res.json(200, { useraccount: data });
        }
        //console.log(callback);
        if(next) next();
    });
}

}

我基本上需要下一个不是为了移交给下一个路线,而是为了使用 Mocha 进行异步单元测试:

it('should return an error json because the useraccount already exists', function(done) {
//Insert useraccount to database so there will be a dupplicate
useraccountController.create(helper.requestMock, helper.responseMock, function() {
    useraccountController.create(helper.requestMock, helper.responseMock, function() {
        assert(helper.responseStatusCode == 400);
        assert(helper.responseJson['error'] && helper.responseJson['error'] != "");
        done();
    });
});

})

测试效果很好。 不幸的是,当从我的routes.js 调用该方法时,next 并不是未定义的。但我希望在routes.js 中的app.post 调用时它是未定义的。

node.js express mocha.js node.js-connect
1个回答
0
投票

这就是窍门:

app.post('/api/useraccounts', function(req, res) {
    useraccountController.create(req, res);
});
© www.soinside.com 2019 - 2024. All rights reserved.