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

jdg4fx2g  于 2023-08-01  发布在  Jest
关注(0)|答案(3)|浏览(320)

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

  1. FAIL tests/unit/test.spec.js

字符串
●测试套件运行失败

  1. Cannot find module '@jest/globals' from 'test.spec.js'
  2. 14 | })
  3. at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:259:17)
  4. at _getJestObj (tests/unit/test.spec.js:16:7)
  5. at Object.<anonymous> (tests/unit/test.spec.js:3:1)


下面是我的Foo组件:

  1. <template>
  2. <button @click="fetchResults">{{ value }}</button>
  3. </template>
  4. <script>
  5. import axios from 'axios'
  6. export default {
  7. data() {
  8. return {
  9. value: null
  10. }
  11. },
  12. methods: {
  13. async fetchResults() {
  14. const response = await axios.get('mock/service')
  15. this.value = response.data
  16. }
  17. }
  18. }
  19. </script>


以及相关的测试:

  1. import { shallowMount } from '@vue/test-utils'
  2. import Foo from './Foo'
  3. jest.mock('axios', () => ({
  4. get: Promise.resolve('value')
  5. }))
  6. it('fetches async when a button is clicked', done => {
  7. const wrapper = shallowMount(Foo)
  8. wrapper.find('button').trigger('click')
  9. wrapper.vm.$nextTick(() => {
  10. expect(wrapper.text()).toBe('value')
  11. done()
  12. })
  13. }


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

41ik7eoe

41ik7eoe1#

假设您也在使用babel-jest,请确保将jestbabel-jest的两个版本设置为相同的编号(24, 26等)。我遇到了同样的问题,这是因为软件包版本不同步。 如果你使用的是npm**7+**,那么**peer dependencies会自动安装**,你可能会同时使用两个不同版本的babel-jest`。您可以通过添加

  1. legacy-peer-deps=true

字符串
.npmrc文件。

2izufjch

2izufjch2#

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

oipij1gg

oipij1gg3#

我也有同样的问题。修复了降低jest库的版本,使其与ts-jest的版本相同:

  1. "@jest/globals": "29.1.1",
  2. "jest": "29.1.1",
  3. "jest-environment-jsdom": "29.1.1",
  4. "ts-jest": "29.1.1"

字符串

相关问题