2015-01-28 1 views
1

Когда я пытаюсь протестировать компонент реакции LoginForm.js, я получаю сообщение об ошибке в LoginForm. Мне нужен модуль под названием joi в LoginForm.Тестирование ReactJS с ошибкой Jest: невозможно прочитать «буфер буфера» неопределенного

TypeError: /home/jaisonjustus/project/captainmice/src/components/LoginForm/test/LoginForm.js: /home/jaisonjustus/project/captainmice/src/components/LoginForm/src/jsx/LoginForm.jsx: /home/jaisonjustus/project/captainmice/node_modules/joi/index.js: /home/jaisonjustus/project/captainmice/node_modules/joi/lib/index.js: /home/jaisonjustus/project/captainmice/node_modules/joi/lib/cast.js: /home/jaisonjustus/project/captainmice/node_modules/joi/lib/string.js: Cannot read property 'buffer' of undefined 
    at Socket.self [as bytesWritten] (net.js:688:8) 
    at _getMetadata (/home/jaisonjustus/project/captainmice/node_modules/jest-cli/src/lib/moduleMocker.js:279:49) 
    at _getMetadata (/home/jaisonjustus/project/captainmice/node_modules/jest-cli/src/lib/moduleMocker.js:286:23) 
    at _getMetadata (/home/jaisonjustus/project/captainmice/node_modules/jest-cli/src/lib/moduleMocker.js:279:27) 
    at Object.module.exports.getMetadata (/home/jaisonjustus/project/captainmice/node_modules/jest-cli/src/lib/moduleMocker.js:388:20) 
    at Loader._generateMock (/home/jaisonjustus/project/captainmice/node_modules/jest-cli/src/HasteModuleLoader/HasteModuleLoader.js:282:56) 
    at Loader.requireMock (/home/jaisonjustus/project/captainmice/node_modules/jest-cli/src/HasteModuleLoader/HasteModuleLoader.js:796:43) 
    at Loader.requireModuleOrMock (/home/jaisonjustus/project/captainmice/node_modules/jest-cli/src/HasteModuleLoader/HasteModuleLoader.js:919:17) 
    at /home/jaisonjustus/project/captainmice/node_modules/joi/lib/string.js:3:11 
    at Object.runContentWithLocalBindings (/home/jaisonjustus/project/captainmice/node_modules/jest-cli/src/lib/utils.js:357:17) 
    at Loader._execModule (/home/jaisonjustus/project/captainmice/node_modules/jest-cli/src/HasteModuleLoader/HasteModuleLoader.js:245:9) 
    at Loader.requireModule (/home/jaisonjustus/project/captainmice/node_modules/jest-cli/src/HasteModuleLoader/HasteModuleLoader.js:900:12) 
    at Loader.requireModuleOrMock (/home/jaisonjustus/project/captainmice/node_modules/jest-cli/src/HasteModuleLoader/HasteModuleLoader.js:921:17) 
    at /home/jaisonjustus/project/captainmice/node_modules/joi/lib/cast.js:13:13 
    at Object.runContentWithLocalBindings (/home/jaisonjustus/project/captainmice/node_modules/jest-cli/src/lib/utils.js:357:17) 
    at Loader._execModule (/home/jaisonjustus/project/captainmice/node_modules/jest-cli/src/HasteModuleLoader/HasteModuleLoader.js:245:9) 
    at Loader.requireModule (/home/jaisonjustus/project/captainmice/node_modules/jest-cli/src/HasteModuleLoader/HasteModuleLoader.js:900:12) 
    at Loader.requireModuleOrMock (/home/jaisonjustus/project/captainmice/node_modules/jest-cli/src/HasteModuleLoader/HasteModuleLoader.js:921:17) 
    at /home/jaisonjustus/project/captainmice/node_modules/joi/lib/index.js:5:12 
    at Object.runContentWithLocalBindings (/home/jaisonjustus/project/captainmice/node_modules/jest-cli/src/lib/utils.js:357:17) 
    at Loader._execModule (/home/jaisonjustus/project/captainmice/node_modules/jest-cli/src/HasteModuleLoader/HasteModuleLoader.js:245:9) 
    at Loader.requireModule (/home/jaisonjustus/project/captainmice/node_modules/jest-cli/src/HasteModuleLoader/HasteModuleLoader.js:900:12) 
    at Loader.requireModuleOrMock (/home/jaisonjustus/project/captainmice/node_modules/jest-cli/src/HasteModuleLoader/HasteModuleLoader.js:921:17) 
    at /home/jaisonjustus/project/captainmice/node_modules/joi/index.js:1:85 
    at Object.runContentWithLocalBindings (/home/jaisonjustus/project/captainmice/node_modules/jest-cli/src/lib/utils.js:357:17) 
    at Loader._execModule (/home/jaisonjustus/project/captainmice/node_modules/jest-cli/src/HasteModuleLoader/HasteModuleLoader.js:245:9) 
    at Loader.requireModule (/home/jaisonjustus/project/captainmice/node_modules/jest-cli/src/HasteModuleLoader/HasteModuleLoader.js:900:12) 
    at Loader.requireModuleOrMock (/home/jaisonjustus/project/captainmice/node_modules/jest-cli/src/HasteModuleLoader/HasteModuleLoader.js:921:17) 
    at /home/jaisonjustus/project/captainmice/src/components/LoginForm/src/jsx/LoginForm.jsx:3:11 
    at Object.runContentWithLocalBindings (/home/jaisonjustus/project/captainmice/node_modules/jest-cli/src/lib/utils.js:357:17) 
    at Loader._execModule (/home/jaisonjustus/project/captainmice/node_modules/jest-cli/src/HasteModuleLoader/HasteModuleLoader.js:245:9) 
    at Loader.requireModule (/home/jaisonjustus/project/captainmice/node_modules/jest-cli/src/HasteModuleLoader/HasteModuleLoader.js:900:12) 
    at Loader.requireModuleOrMock (/home/jaisonjustus/project/captainmice/node_modules/jest-cli/src/HasteModuleLoader/HasteModuleLoader.js:921:17) 
    at /home/jaisonjustus/project/captainmice/src/components/LoginForm/test/LoginForm.js:6:17 
    at Object.runContentWithLocalBindings (/home/jaisonjustus/project/captainmice/node_modules/jest-cli/src/lib/utils.js:357:17) 
    at Loader._execModule (/home/jaisonjustus/project/captainmice/node_modules/jest-cli/src/HasteModuleLoader/HasteModuleLoader.js:245:9) 
    at Loader.requireModule (/home/jaisonjustus/project/captainmice/node_modules/jest-cli/src/HasteModuleLoader/HasteModuleLoader.js:900:12) 
    at jasmineTestRunner (/home/jaisonjustus/project/captainmice/node_modules/jest-cli/src/jasmineTestRunner/jasmineTestRunner.js:239:16) 
    at /home/jaisonjustus/project/captainmice/node_modules/jest-cli/src/TestRunner.js:371:12 
    at _fulfilled (/home/jaisonjustus/project/captainmice/node_modules/jest-cli/node_modules/q/q.js:798:54) 
    at self.promiseDispatch.done (/home/jaisonjustus/project/captainmice/node_modules/jest-cli/node_modules/q/q.js:827:30) 
    at Promise.promise.promiseDispatch (/home/jaisonjustus/project/captainmice/node_modules/jest-cli/node_modules/q/q.js:760:13) 
    at /home/jaisonjustus/project/captainmice/node_modules/jest-cli/node_modules/q/q.js:574:44 
    at flush (/home/jaisonjustus/project/captainmice/node_modules/jest-cli/node_modules/q/q.js:108:17) 
    at /home/jaisonjustus/project/captainmice/node_modules/jest-cli/src/lib/FakeTimers.js:259:7 
    at process._tickCallback (node.js:419:13) 

Структура папок

node_modules/ 
jest-preprocessor.js 
src/ 
    components/ 
    LoginForm/ 
     src/ 
     jsx/ 
      LoginForm.jsx 
     LoginForm.scss 
     test/ 
     LoginForm.js 

Конфигурация Jest

{ 
     rootDir: 'src', 
     testDirectoryName: 'test', 
     testPathDirs: [ 'components' ], 
     modulePathIgnorePatterns: [ '../node_modules/' ], 
     scriptPreprocessor: '../jest-preprocess.js', 
     moduleFileExtensions: [ 'js', 'jsx', 'json' ], 
     unmockedModulePathPatterns: [ 
     '../node_modules/react’, 
     '../node_modules/joi’ 
     ] 
    } 

ответ

3

Вот мой workaround

Эта ошибка была действительно разочаровывающей, но теперь я использую jest.autoMockOff(); в верхней части тестового файла, и он отлично работает. Предположительно, я смогу вручную использовать jest.mock(..) для отдельных файлов, но я еще не пробовал.


Update: Там в a fix, что не требует от вас отключить автоматическую насмешку.