diff --git a/src/lib/__tests__/moduleMocker-test.js b/src/lib/__tests__/moduleMocker-test.js index dd2fd8f79a56..30c461dc1e8d 100644 --- a/src/lib/__tests__/moduleMocker-test.js +++ b/src/lib/__tests__/moduleMocker-test.js @@ -75,6 +75,21 @@ describe('moduleMocker', function() { expect(fooMock.nonEnumGetter).toBeUndefined(); }); + it('does not mock __esModule special property (babel6)', function () { + var ClassFoo = function() {}; + + var fooModule = { + __esModule: true, + default: ClassFoo + }; + + var fooModuleMock = moduleMocker.generateFromMetadata( + moduleMocker.getMetadata(fooModule) + ); + + expect(fooModuleMock.__esModule).toEqual(fooModule.__esModule); + }); + it('mocks ES2015 non-enumerable methods', function() { class ClassFoo { foo() {} diff --git a/src/lib/moduleMocker.js b/src/lib/moduleMocker.js index 4f7111b0c292..8bedb444c1a6 100644 --- a/src/lib/moduleMocker.js +++ b/src/lib/moduleMocker.js @@ -287,6 +287,12 @@ function generateMock(metadata, callbacks, refs) { getSlots(metadata.members).forEach(slot => { const slotMetadata = metadata.members[slot]; + // special slot used by babel 6 + if (slot === '__esModule') { + mock[slot] = slotMetadata; + return; + } + if (slotMetadata.ref != null) { callbacks.push(() => mock[slot] = refs[slotMetadata.ref]); } else { @@ -349,6 +355,13 @@ function getMetadata(component, _refs) { if (type !== 'array') { if (type !== 'undefined') { getSlots(component).forEach(slot => { + // special slot used by babel 6 + if (slot === '__esModule') { + members = members || {}; + members[slot] = component[slot]; + return; + } + if ( slot.charAt(0) === '_' || (