我试图在我的项目中从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()
})
}
型
任何帮助将不胜感激:)谢谢大家!
3条答案
按热度按时间41ik7eoe1#
假设您也在使用
babel-jest
,请确保将jest
和babel-jest
的两个版本设置为相同的编号(24,
26等)。我遇到了同样的问题,这是因为软件包版本不同步。 如果你使用的是npm**7+**,那么**peer dependencies会自动安装**,你可能会同时使用两个不同版本的
babel-jest`。您可以通过添加字符串
.npmrc
文件。2izufjch2#
在我的例子中,这个错误发生在babel-jest@26.0.1。降级到babel-jest@21.2.0后,问题消失了。
oipij1gg3#
我也有同样的问题。修复了降低jest库的版本,使其与
ts-jest
的版本相同:字符串