1

当我尝试测试反应组件LoginForm.js时,我在 LoginForm 中遇到错误。我需要一个joi在 LoginForm 中调用的模块。

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

笑话配置

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

1 回答 1

3

这是我的解决方法

这个错误真的很令人沮丧,但现在我jest.autoMockOff();在我的测试文件的顶部使用它并且它工作正常。大概我可以jest.mock(..)在单个文件上手动使用,但我还没有尝试过。


更新:有一个不需要您关闭自动模拟的修复程序。

于 2015-02-04T20:29:31.447 回答