【问题标题】:unit testting using sinon+mockery+chai in node.js在 node.js 中使用 sinon+mockery+chai 进行单元测试
【发布时间】:2023-03-10 20:23:01
【问题描述】:

我对单元测试很陌生,所以请指导我完成以下操作:我正在尝试对以下功能进行单元测试...

helpers.js

    function helpers() {
    }

    helpers.prototype.Amount = function(callback){
        var Amount = 0;
        app.models.xxx.find({}, function(err, res) {
            if(err){
            } else {
                for(var i=0; i < res.length; i++){
                    Amount = Amount + res[i].hhhh;
                }
                return callback(null,Amount);
            }
        });
    }
module.exports.helpers = helpers;

helpers-test.js

describe('helper', function(){

var AmountStub = sinon.stub(Helper.protoype,"getAmount");
  it('should return the amount', function(done){
    var helper = new Helper();

    helper.getAmount(function(err, res){
      assert.ifError(err);
    });
    done();
  });
});

但我收到以下错误:

/node_modules/sinon/lib/sinon/util/core.js:67
                throw new TypeError("Should wrap property of object");
                      ^
TypeError: Should wrap property of object

请指导我完成这个。我的做法也对吗?提前谢谢..

编辑:

var Helper =  require("../../server/helpers").helpers;

    var helper = sinon.stub(
        new Helper(),
        "getAmount",
          function (callback) { callback(1000); }
          );
          helper.getAmount(
              function (value) { 
                expect(value).to.be.equal(1000);
                done();
              });
          });

【问题讨论】:

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


    【解决方案1】:

    根据sinon docs,您需要传递对象本身,而不是其原型。

    var helper = sinon.stub(new Helper(), "getAmount");
    

    在您的情况下,您想在 it 测试中进行存根并提供函数的替换:

    var helper = sinon.stub(
        new Helper(),
        "getAmount",
        function (callback) { callback(dummyValue); }
    );
    helper.getAmount(
        function (value) { done(); }
    );
    

    【讨论】:

    • 属性名是Amount还是getAmount?
    • 尝试打印对象。 console.log((new Helper()).getAmount)。看看有没有这个功能。
    猜你喜欢
    • 2021-09-27
    • 2018-11-05
    • 2017-06-09
    • 2019-02-14
    • 2016-05-26
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 2019-02-03
    相关资源
    最近更新 更多