用于添加Jest测试运行程序的Vue CLI插件不会转换.js文件

时间:2019-07-11 16:09:31

标签: unit-testing vue.js jestjs vue-cli

快速免责声明,我无法在另一个项目上重现此内容,这就是为什么我在这里而不是在Github上发布问题。

问题

所以我做了一个快速的演示项目,向同事展示了如何使用Vue测试工具,这使我无所适从。不会在transform的{​​{1}}部分中拾取它。

我使用Vue CLI创建了项目,使用jest.config.js选择ESlint和Babel,然后运行vue create demo-project。我承诺,一切正常,运行测试命令,一切正常。

所以我们开始测试快照,一切都很好。第二天,回到项目继续进行,这是我得到的错误。

vue add @vue/cli-plugin-unit-jest

仅运行常规的 > vue-jest@0.1.0 test:unit .../demo-projects/vue-jest > vue-cli-service test:unit FAIL tests/unit/example.spec.js ● Test suite failed to run Jest encountered an unexpected token This usually means that you are trying to import a file which Jest cannot parse, e.g. it's not plain JavaScript. By default, if Jest sees a Babel config, it will use that to transform your files, ignoring "node_modules". Here's what you can do: • To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config. • If you need a custom transformation specify a "transform" option in your config. • If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option. You'll find more details and examples of these config options in the docs: https://jestjs.io/docs/en/configuration.html Details: .../demo-projects/vue-jest/tests/unit/example.spec.js:1 ({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){import { shallowMount } from '@vue/test-utils'; ^ SyntaxError: Unexpected token { at ScriptTransformer._transformAndBuildScript (node_modules/jest-runtime/build/script_transformer.js:403:17) Test Suites: 1 failed, 1 total Tests: 0 total Snapshots: 0 total Time: 1.163s Ran all test suites. npm ERR! code ELIFECYCLE npm ERR! errno 1 会导致测试实用程序随附的npm run test:unit受到干扰,并在Node测试环境中失败。

尝试的解决方案

没有工作

  • 删除example.spec.js并重新安装
  • 除了上述步骤(单独完成)之外,还要删除node_modules
  • 在提交工作时恢复到提交状态
  • 检出到另一个分支,删除package-lock.json添加的所有文件,然后再次运行命令以重新创建所有文件
    • vue add @vue/cli-plugin-unit-jest
    • jest.config.js-及其所有文件

工作

非常清楚发生了什么,因此在tests/文件中,我在jest.config.js字段下添加了.js文件。

transform

此解决方案解决了该问题,并正确转换了transform: { '^.+\\.vue$': 'vue-jest', '.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$': 'jest-transform-stub', '^.+\\.(js|jsx)?$': 'babel-jest' // added .js },

尝试娱乐

我试图通过创建另一个项目,运行相同的步骤来查看这是否是一个错误,并且一切正常。我什至将所有文件从损坏的文件复制并粘贴到新文件,寻找git中的差异。 完全相同。这就是为什么我认为它可能是example.spec.js,但仍然无法正常工作的原因。

希望这不是浪费任何人的时间,因为这并不是真正的问题。我主要是想让有相同问题的任何人都能看到它,而看到添加node_modules扩展名就可以解决这个问题而不必从头开始,但是我也想知道是否有人知道为什么会发生这种情况? / p>

0 个答案:

没有答案