【问题标题】:nodejs test - TypeError: undefined is not a functionnodejs测试-TypeError:未定义不是函数
【发布时间】:2015-05-12 17:14:43
【问题描述】:

对于我的以下代码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);
            });
        });
    });
});

【问题讨论】:

  • 哪一行报错?
  • testedModule._get(bucketName, imgName, function () {

标签: node.js testing amazon-s3 sinon


【解决方案1】:

因此,当然,在疲倦时多注意确实会有所帮助。

如果我导出了我的模块也会有所帮助!

'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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-23
    • 2016-01-14
    • 2015-08-04
    • 2014-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多