在使用 jest 的 vue 测试中找不到模块“@jest/globals”

Posted

技术标签:

【中文标题】在使用 jest 的 vue 测试中找不到模块“@jest/globals”【英文标题】:Cannot find module '@jest/globals' in a vue test using jest 【发布时间】:2020-08-30 20:15:15 【问题描述】:

我正在尝试从我的项目中的 vue 文档编写一个非常简单的测试。 我可以在我的项目中用 jest 运行测试,但是一旦我试图用 jest 模拟 axios 请求,我就会遇到这个错误:

 FAIL  tests/unit/test.spec.js

● 测试套件无法运行

Cannot find module '@jest/globals' from 'test.spec.js'

  14 |   )

  at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:259:17)
  at _getJestObj (tests/unit/test.spec.js:16:7)
  at Object.<anonymous> (tests/unit/test.spec.js:3:1)

这是我的 Foo 组件:

<template>
  <button @click="fetchResults"> value </button>
</template>

<script>
  import axios from 'axios'

  export default 
    data() 
      return 
        value: null
      
    ,

    methods: 
      async fetchResults() 
        const response = await axios.get('mock/service')
        this.value = response.data
      
    
  
</script>

与测试相关:

import  shallowMount  from '@vue/test-utils'
import Foo from './Foo'
jest.mock('axios', () => (
  get: Promise.resolve('value')
))

it('fetches async when a button is clicked', done => 
    const wrapper = shallowMount(Foo)
    wrapper.find('button').trigger('click')
    wrapper.vm.$nextTick(() => 
      expect(wrapper.text()).toBe('value')
      done()
    )
  

任何帮助将不胜感激:) 谢谢大家!

【问题讨论】:

【参考方案1】:

在我的例子中,这个错误发生在 babel-jest@26.0.1。降级到 babel-jest@21.2.0 后,问题就消失了。

【讨论】:

【参考方案2】:

假设您也在使用babel-jest,请确保将jestbabel-jest 的两个版本都设置为26。我遇到了同样的问题,这是因为软件包版本不同步。

【讨论】:

感谢您的帮助。实际上从我的 jest.config.js 文件中删除了“moduleDirectories”:[“node_modules”,“src”],“modulePaths”:[“/node_modules”],所有这些都像一个魅力:)

以上是关于在使用 jest 的 vue 测试中找不到模块“@jest/globals”的主要内容,如果未能解决你的问题,请参考以下文章

Vue-jest 找不到 babel

测试套件无法运行在 vue3 中使用 jest 时找不到模块'vue-template-compiler

开玩笑测试:在打字稿组件导入中找不到模块

Jest+vue:“找不到模块 ....vue”

在 Jest TypeScript 中找不到名称“它”

NestJS - 测试套件无法运行从“comment/comment.entity.ts”中找不到模块“src/article/article.entity”