2016-04-22 14 views
0

ich Unit-Tests bin sehr neu, so wenden Sie sich bitte mich durch die folgende: Ich habe zu Unit-Test versuche die folgende Funktion ...Einheit testting mit sinon + Spott + chai in node.js

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; 

Helfer-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(); 
    }); 
}); 

Aber ich folgende Fehlermeldung erhalte:

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

Bitte führen Sie mich durch diese. Auch die Art, wie ich es mache, ist richtig? Vielen Dank im Voraus ..

EDIT:

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(); 
       }); 
      }); 

Antwort

1

Nach dem sinon docs Sie benötigen ein Objekt selbst, seinen nicht-Prototyp zu übergeben.

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

In Ihrem Fall würden Sie gerne in dem it Test tun Anstoßen und den Ersatz für die Funktion zur Verfügung stellen:

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

Ist der Name der Eigenschaft Betrag oder getAmount? –

+0

Versuchen Sie, das Objekt zu drucken. console.log ((neuer Helfer()). getAmount). Sehen Sie, ob es diese Funktion überhaupt hat. –

+0

Sind Sie sicher, dass Ihr Code genau so ist, wie ich ihn geschrieben habe? –