thlorenz / proxyquireify

browserify >= v2 version of proxyquire. Mocks out browserify's require to allow stubbing out dependencies while testing.
MIT License
152 stars 24 forks source link

Proxyquireify not working with karma #66

Closed dmiranda2791 closed 7 years ago

dmiranda2791 commented 7 years ago

I'm trying to mock some dependencies using proxyquireify but I get an error:

30 01 2017 15:36:33.947:ERROR [karma]: { SyntaxError: 'import' and 'export' may appear only with 'sourceType: module' (3:0)
    at Parser.pp.raise (/Users/danielmiranda/dev/AcklenAvenue/roadrunner-admin-frontend/node_modules/proxyquireify/node_modules/acorn/dist/acorn.js:1745:13)
    at Parser.pp.parseStatement (/Users/danielmiranda/dev/AcklenAvenue/roadrunner-admin-frontend/node_modules/proxyquireify/node_modules/acorn/dist/acorn.js:2450:34)
    at Parser.pp.parseTopLevel (/Users/danielmiranda/dev/AcklenAvenue/roadrunner-admin-frontend/node_modules/proxyquireify/node_modules/acorn/dist/acorn.js:2379:21)
    at parse (/Users/danielmiranda/dev/AcklenAvenue/roadrunner-admin-frontend/node_modules/proxyquireify/node_modules/acorn/dist/acorn.js:101:12)
    at parse (/Users/danielmiranda/dev/AcklenAvenue/roadrunner-admin-frontend/node_modules/proxyquireify/node_modules/detective/index.js:9:12)
    at walk (/Users/danielmiranda/dev/AcklenAvenue/roadrunner-admin-frontend/node_modules/proxyquireify/node_modules/detective/index.js:43:15)
    at Function.exports.find (/Users/danielmiranda/dev/AcklenAvenue/roadrunner-admin-frontend/node_modules/proxyquireify/node_modules/detective/index.js:72:5)
    at findProxyquireVars (/Users/danielmiranda/dev/AcklenAvenue/roadrunner-admin-frontend/node_modules/proxyquireify/lib/find-dependencies.js:31:6)
    at module.exports (/Users/danielmiranda/dev/AcklenAvenue/roadrunner-admin-frontend/node_modules/proxyquireify/lib/find-dependencies.js:47:14)
    at requireDependencies (/Users/danielmiranda/dev/AcklenAvenue/roadrunner-admin-frontend/node_modules/proxyquireify/lib/transform.js:9:14)
    at Stream.end (/Users/danielmiranda/dev/AcklenAvenue/roadrunner-admin-frontend/node_modules/proxyquireify/lib/transform.js:24:16)
    at _end (/Users/danielmiranda/dev/AcklenAvenue/roadrunner-admin-frontend/node_modules/proxyquireify/node_modules/through/index.js:61:9)
    at Stream.stream.end (/Users/danielmiranda/dev/AcklenAvenue/roadrunner-admin-frontend/node_modules/proxyquireify/node_modules/through/index.js:70:5)
    at DestroyableTransform.onend (/Users/danielmiranda/dev/AcklenAvenue/roadrunner-admin-frontend/node_modules/karma-browserify/node_modules/readable-stream/lib/_stream_readable.js:537:10)
    at DestroyableTransform.g (events.js:291:16)
    at emitNone (events.js:91:20) pos: 62, loc: Position { line: 3, column: 0 }, raisedAt: 68 }

Here is my karma.conf:

module.exports = function(config) {
    config.set({
        browsers: ['PhantomJS'],
        frameworks: ['browserify', 'mocha', 'chai', 'sinon', 'chai-sinon'],
        files: ['node_modules/babel-polyfill/dist/polyfill.js', 'test/unit/**/*.js'],
        reporters: ['spec'],
        preprocessors: {
            'test/unit/**/*.js': ['browserify']
        },
        browserify: {
            debug: true,
            plugin: [require('proxyquireify').plugin],
            transform: ['babelify']
        },
        singleRun: true
    });
};

I have also tried browserify section like this:

browserify: {
    debug: true,
        transform: [['babelify', {presets: ['es2015']}]]
    plugin: [require('proxyquireify').plugin],
}

I will appreciate your help 😄

bendrucker commented 7 years ago

Hi, it looks like your code is still in ES6 format when it hits proxyquireify. You'll have to make sure babelify runs first. I haven't used Karma in a while so I don't have any specific recommendations there.