2015-05-12 77 views
1

对于我的以下代码,S3Handler,我有以下测试,它返回错误:TypeError: undefined is not a functionnodejs test - TypeError:undefined不是函数

行引发错误就是testedModule._get(bucketName, imgName, function() {

为什么会出现这个错误?

S3Handler

'use strict'; 

var s3 = new (require('aws-sdk')).S3(); 

var S3Handler = {}; 

S3Handler._get = function (bucketName, imgName, callback) { 

    var params = { 
     Bucket: bucketName, 
     Key: imgName 
    }; 

    s3.getObject(params, function (error, data) { 
     if (error) { 
      return callback(error, null); 
     } 
     console.log(data); 
     return callback(null, data); 
    }); 
}; 

测试:

describe("S3Handler", function() { 
    describe("S3Handler._get", function() { 
     var testedModule, imgName, callbackSpy, bucketName, getStub, fakeResponse, s3Stub; 

     before(function() { 

      fakeResponse = {Body: "Image content"}; 

      imgName = "test.jpg"; 

      bucketName = "testBucket"; 

      callbackSpy = sinon.spy(); 

      getStub = sinon.stub(); 

      s3Stub = sinon.stub().returns({getObject: getStub}); 


      testedModule = proxyquire("../S3Handler.js", { 
       'aws-sdk': { 
        "S3": s3Stub 
       } 
      }); 
     }); 

     it("fetch object from S3Bucket", function() { 
      getStub.withArgs(bucketName, imgName).callsArgWith(1, null, fakeResponse); 
      testedModule._get(bucketName, imgName, function() { 
       callbackSpy.apply(null, fakeResponse); 
      }); 
     }); 
    }); 
}); 
+0

哪一行会引发错误? – marekful

+0

'testedModule._get(bucketName,imgName,function(){' – hyprstack

回答

0

所以当然,要累时确实帮助更多的关注。

这也将有助于如果我已经出口我的模块!

'use strict'; 

var s3 = new (require('aws-sdk')).S3(); 

var S3Handler = {}; 

S3Handler._get = function (bucketName, imgName, callback) { 

    var params = { 
     Bucket: bucketName, 
     Key: imgName 
    }; 

    s3.getObject(params, function (error, data) { 
     if (error) { 
      return callback(error, null); 
     } 
     console.log(data); 
     return callback(null, data); 
    }); 
}; 

module.exports = S3Hanlder; 
相关问题