【问题标题】:Test and stub params in POST requestPOST 请求中的测试和存根参数
【发布时间】:2016-08-07 11:34:25
【问题描述】:

伙计们,我如何在 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

【问题讨论】:

    标签: javascript node.js unit-testing mocha.js sinon


    【解决方案1】:

    我想到了两个选项(可能还有很多):

    选项 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 等工具创建对服务器端点的调用。

    【讨论】:

    • 谢谢,选项一对我来说效果很好,将研究选项 2,因为它有最合适的解决方案
    【解决方案2】:

    问题是您没有在测试中对 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();
        });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-01
      • 1970-01-01
      • 2020-03-26
      • 2017-10-28
      • 1970-01-01
      • 2011-10-24
      相关资源
      最近更新 更多