2016-02-14 3 views
3

Я делаю упражнения с ES2015, Шутки, React, и я получаю эту ошибку:Jest + ES2015 импорт

TypeError: Property description must be an object: undefined 
at defineProperties (native) 
at Object.eval (<PROJECT>/node_modules/event-emitter/index.js:127:8) 

Порывшись в ней, я думаю, что это связано с импорта nodeModule EventEmitter или по расширяя его класс.

Это код файла сценария:

import EventEmitter from 'event-emitter'; 
import AppDispatcher from '../dispatcher/app-dispatcher'; 

import { 
    ACTION_CURSOR_POSITION_CHANGED, 
    ACTION_IS_DRAGGING_CHANGED 
} from '../constants/actions'; 

let _draggingStoreInstance = null; 

/** 
* DraggingStore class 
*/ 
export default class DraggingStore extends EventEmitter 
{ 
    /** 
    * Constructor 
    */ 
    constructor() { 
    // ... 

Исходный код тестового файла выглядит следующим образом:

import '../unmock/dragging-store.unmock.js'; 
import DraggingStore from '../../src/stores/dragging-store'; 

describe('Dragging Store',() => { 
    let draggingStoreInstance = null; 

    beforeEach(() => { 
     draggingStoreInstance = DraggingStore.getInstance(); 
    }); 

    it('should be defined',() => { 
     expect(DraggingStore).toBeDefined(); 
     expect(draggingStoreInstance).toBeDefined(); 
    }); 
}); 

Я сделал дополнительный файл для исключения издевается:

jest.dontMock('../../src/stores/dragging-store.js'); 
jest.dontMock('../../src/dispatcher/app-dispatcher.js'); 
jest.dontMock('../../src/constants/actions.js'); 

Сам код запускается плавно в браузере после компиляции, но механизм тестирования дает ошибку.

Я добавил это в моем package.json:

"scripts": { 
    "test": "jest" 
    }, 
"jest": { 
    "scriptPreprocessor": "./node_modules/babel-jest", 
    "unmockedModulePathPatterns": [ 
     "./node_modules/react" 
    ], 
    "collectCoverage": true, 
    "testDirectoryName": "spec", 
    "moduleFileExtensions": [ 
     "js" 
    ], 
    "collectCoverageOnlyFrom": { 
     // All files to test 
    } 
    } 

Кто-нибудь есть понятия, как обойти эту проблему? Спасибо заранее ...

Update: полный исходный код можно найти здесь: https://github.com/dejakob/unlease-chess

ответ

2

Я понимаю, что это очень поздно, но, многое изменилось в то время как вы Отвечали на этот вопрос. С Jest V19 +, и предполагая, что вы используете последнюю версию Вавилонского, а также, вы можете следовать инструкциям здесь:

http://facebook.github.io/jest/docs/webpack.html#using-with-webpack-2

, так как вы используете модули, то вам нужно сказать Бабелю, чтобы transpile их CommonJS require s, чтобы они могли запускаться в среде узлов, как работает Jest.

+0

Jups, я разместил этот вопрос год назад, и JEST сам сильно улучшился с тех пор. Он даже настроен в проекте React Native по умолчанию в настоящее время. – dejakob