在POST请求中testing和存根参数

伙计们如何在POST请求中存储参数,例如这里是函数的一部分

gridCalculator : function(req,res){ // calculation logic var options=[]; options.dateFirstLicensed = req.param('DateFirstLicensed'); options.dateFirstInsured = req.param('DateFirstInsured'); options.claimList = req.param('ClaimList'); options.suspenList = req.param('SuspenList'); ...etc 

如果我这样做

  it('grid Calculate', function (done) { var req = { 'DateFirstLicensed' : "01-01-2010", 'DateFirstInsured': "01-01-2011", 'ClaimList': ['05-03-2012'], 'SuspenList': [{'StartDate':'05-03-2012','EndDate':'05-05-2012' }] }; gridCalculator.gridCalculator(req,function (err, result) { result.should.exist; done(); }); }); 

我得到错误,因为我只是传递一个对象而不是POST请求

  TypeError: req.param is not a function 

想到两个选项(可能还有更多):

选项1:自己定义param函数:

  it('grid Calculate', function (done) { var params = function(param) { switch (param) { case 'DateFirstLicensed': return "01-01-2010"; case 'DateFirstInsured': ... //do the same for all params } }; var req = { param: params }; gridCalculator.gridCalculator(req,function (err, result) { result.should.exist; done(); }); }); 

选项2:使用像supertest这样的工具来创build对服务器端点的调用。

问题是你不testing你的testing中的gridCalculator方法中使用的函数。

它应该是这样的:

 it('grid Calculate', function (done) { var testParams = { 'DateFirstLicensed' : "01-01-2010", 'DateFirstInsured': "01-01-2011", 'ClaimList': ['05-03-2012'], 'SuspenList': [{'StartDate':'05-03-2012','EndDate':'05-05-2012'}] }; var req = { param: function (paramName) { return testParams[paramName]; } }; gridCalculator.gridCalculator(req,function (err, result) { result.should.exist; done(); }); });