vendredi 22 mai 2015

Error: BLANKET-Error parsing instrumented code: TypeError: undefined is not a function

Has anyone run into this error before? Error: BLANKET-Error parsing instrumented code: TypeError: undefined is not a function at Context.<anonymous> (test/test.js:921:24)

I have the following module which I am trying to test. This module require a lot of other modules I had to write. Don;t understand why I am getting this error as I have performed the same action several times before only not using my own modules as dependencies but third party modules.

S3resizer code:

'use strict';

var async = require('async');
var S3get = require("./S3Handler.js")._get();
var S3put = require("./S3Handler.js")._put();
var readDirFile = require("./readDirectory.js")._get();
var readDirCont = require("./readDirectory.js")._getContent();
var rs = require("./resizer.js").resize();
var sqsCreate = require("./sqsHandler.js")._createQueue();
var sqsSend = require("./sqsHandler.js")._sendMessage();

var S3resizer = {};

S3resizer.rs = function (imgName, bucketName, sizesObj, imageType, obj, cb) {

    var dir = "/tmp";

    async.waterfall([
        function (callback) {
            S3get(bucketName, imgName, callback);
        },
        function (data, callback) {
            rs(data, imgName, dir, sizesObj, callback);
        },
        function (callback) {
            readDirFile(dir, callback);
        },
        function (files, callback) {
            async.map(files, function (file, mapNext) {
                readDirCont(file, function (data) {
                    S3put(bucketName, data, file, imgName, imageType, mapNext);
                });
            }, callback);
        },
        function (callback) {
            sqsCreate(callback);
        },
        function (obj, callback) {
            sqsSend(obj, callback);
        }
    ], function (error) {
        if(error) {
            cb(error);
        } else {
            cb();
        }
    });
};

module.exports = S3resizer;

test code:

describe("S3resizer", function () {
    var testedModule, fakeResponse, fakeFiles, S3getStub, rsStub, readDirFileStub, readDirContStub, S3putStub, sqsCreateStub, sqsSendStub, cbSpy, imgName, bucketName, sizesObj, imageType, obj;

    before(function () {

        S3getStub = sinon.stub();

        rsStub = sinon.stub();

        readDirContStub = sinon.stub();

        readDirFileStub = sinon.stub();

        S3putStub = sinon.stub();

        sqsCreateStub = sinon.stub();

        sqsSendStub = sinon.stub();

        cbSpy = sinon.spy();

        imgName = "Whatever";

        bucketName = "Chappie";

        sizesObj = [
            { width: 800, height: 800, name: 'large' },
            { width: 500, height: 500, name: 'medium' },
            { width: 200, height: 200, name: 'small' },
            { width: 45, height: 45, name: 'thumbnail'}
        ];

        imageType = "png";

        obj = {
            "event":"image_rs.re-sized",
            "message": {
                "url":"S3://bucketname/images/908798",
                "sizes":["large","medium","small","thumbnail"]
            }
        };

        fakeResponse = { Body: 'image content' };

        fakeFiles = ["thumbnail_Whatever", "small_Whatever", "medium_Whatever", "large_Whatever"];

        testedModule = proxyquire ("../S3resizer", {
            "../S3Handler.js" : {
                _get: S3getStub,
                _put: S3putStub
            },
            "../readDirectory.js": {
                _get: readDirFileStub,
                _getContent: readDirContStub
            },
            "../resizer.js": {
                resize: rsStub
            },
            "../sqsHandler.js": {
                _createQueue: sqsCreateStub,
                _sendMessage: sqsSendStub
            }
        });
    });

    it("calls context.done", function (done) {
        S3getStub.callsArgWith(2, null, fakeResponse, imgName);
        readDirFileStub.callsArgWith(1, null, fakeFiles);

        testedModule.rs(imgName, bucketName, sizesObj, imageType, obj, function () {
            cbSpy.apply(null, arguments);
            expect(cbSpy).has.been.called;
            done();
        });
    });
});

the error points to the line where testedModule = proxyquire ("../S3resizer.js", {

Aucun commentaire:

Enregistrer un commentaire