对于我的以下代码S3Handler
,我有以下测试,它返回错误:TypeError: undefined is not a function
。
抛出错误的行是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 :(得分: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;