我正在尝试从我的项目中的 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
,请确保您拥有两个版本的 jest
和 babel-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/