在我的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时,我希望它是未定义的。
答案 0 :(得分:0)
这就是诀窍:
app.post('/api/useraccounts', function(req, res) {
useraccountController.create(req, res);
});