javascript - 在使用 jest 的 vue 测试中找不到模块 '@jest/globals'

标签 javascript vue.js testing jestjs

我正在尝试从我的项目中的 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()
    })
  }

任何帮助,将不胜感激 :)
多谢你们 !

最佳答案

假设您也在使用 babel-jest ,请确保您拥有两个版本的 jestbabel-jest设置为相同的数字(24, 26` 等)。我有同样的问题,这是因为包版本不同步。

如果你使用 npm 7+ ,然后 自动安装对等依赖项你可能会得到两个不同版本的 babel-jest同时使用。你 can disable that behavior通过添加

legacy-peer-deps=true
进入 .npmrc文件。

关于javascript - 在使用 jest 的 vue 测试中找不到模块 '@jest/globals',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61794923/

相关文章:

javascript - 动态加载音频声音Javascript

javascript - 如何根据状态显示 Console.log?

javascript - 加载项目中的json文件到app.js

javascript - 从 vue.js 中的子发射传递时值未定义

javascript - 如何使用POST方法感知和访问参数

android - 通过 TeamCity 为 Android 持续集成。首选工具?

javascript - ESLint "code"与可修复的 "whitespace"值

javascript - 了解主干扩展

javascript - Vue 2.7 getCurrentInstance() 尝试获取 $vuetify 等属性

c++ - GoogleTest - 在一个夹具中有多个 setUp()