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

时间:2014-03-14 09:07:37

标签: node.js express connect mocha

在我的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时,我希望它是未定义的。

1 个答案:

答案 0 :(得分:0)

这就是诀窍:

app.post('/api/useraccounts', function(req, res) {
    useraccountController.create(req, res);
});