带有 jest 的 vue-test-utils 为 map-spread 运算符抛出了意外的令牌错误

Posted

技术标签:

【中文标题】带有 jest 的 vue-test-utils 为 map-spread 运算符抛出了意外的令牌错误【英文标题】:vue-test-utils with jest throws unexpected token error for map-spread operator 【发布时间】:2018-10-17 21:34:41 【问题描述】:

我试图按照本指南 https://vue-test-utils.vuejs.org/en/guides/testing-SFCs-with-jest.html 为我的 Vue 项目设置测试

我完成了指南并为我的一个组件创建了一个测试。然后我运行jest 并收到以下错误:

unknown: Unexpected token (10:4)
         8 | export default 
         9 |   computed: 
      > 10 |     ...mapGetters([
           |     ^
        11 |       'user'
        12 |     ])
        13 |   

我已经用谷歌搜索了这个错误并查看了其他示例项目,但我仍然不知道如何解决这个问题。

任何帮助将不胜感激。

App.vue

<template>
  <div id="app" />
</template>

<script>
  import  mapGetters  from 'vuex'

  export default 
    computed: 
      ...mapGetters([
        'user'
      ])
    
  
</script>

App.spec.js

import  shallow  from '@vue/test-utils'
import App from './App'

describe('App', () => 

  it('works', () => 
    const wrapper = shallow(App)

    expect(wrapper.isVueInstance()).toBeTruthy()
  )
)

.babelrc


"presets": [
    ["env",  "modules": false ]
  ],
  "env": 
    "test": 
      "presets": [
        ["env",  "targets":  "node": "current" ]
      ]
    
  

package.json(只是开玩笑的一部分)

"jest": 
    "moduleFileExtensions": [
      "js",
      "json",
      "vue"
    ],
    "transform": 
      ".*\\.(vue)$": "<rootDir>/node_modules/vue-jest",
      "^.+\\.js$": "<rootDir>/node_modules/babel-jest"
    ,
    "snapshotSerializers": [
      "<rootDir>/node_modules/jest-serializer-vue"
    ],
    "moduleNameMapper": 
      "^@/(.*)$": "<rootDir>/src/$1"
    
  

【问题讨论】:

【参考方案1】:

通过这个答案: SyntaxError on spread operator, while using babel env preset

要使用扩展运算符,必​​须使用 babel-plugin-transform-object-rest-spread,所以安装它: npm install --save-dev babel-plugin-transform-object-rest-spread

并将其添加到 .babelrc 中的“插件”选项下: "plugins": ["transform-object-rest-spread"]

另外,查看https://vue-test-utils.vuejs.org/guides/#mocking-getters 在测试中模拟你的吸气剂。

【讨论】:

这行得通,但是有一些关于 ...(传播)运算符的警告,要修复它 newer version of the plugin 需要在你的 package.json 中

以上是关于带有 jest 的 vue-test-utils 为 map-spread 运算符抛出了意外的令牌错误的主要内容,如果未能解决你的问题,请参考以下文章

Vue-test-utils | Jest:如何处理依赖关系?

无法在基于 jest 和 vue-test-utils 的测试项目中使用 vue.js 的 ES6 模块

使用 vue-test-utils / jest 触发 Quasar QBtn 点击

使用 `vue-test-utils` 和 `jest` 使用 `Created` 钩子进行测试

如何使用 Vue-test-utils 和 Jest 测试 Vuex 突变

如何在单元测试期间使用 vue-test-utils 和 jest 模拟 mixin?