我正在使用 vue test utils 进行简单的单元测试。但它不起作用。我不知道....帮帮我
我安装了这些东西.....
> $ npm i -D jest @vue/test-utils vue-jest jest-serializer-vue babel-jest babel-core@bridge
> $ npm i -D @babel/core @babel/preset-env
Run Code Online (Sandbox Code Playgroud)
我做了jest.config.js文件
module.exports = {
moduleFileExtensions: [
'vue',
'js'
],
moduleNameMapper: {
'^~/(.*)$': '<rootDir>/src/$1'
},
modulePathIgnorePatterns: [
'<rootDir>/node_modules',
'<rootDir>/dist'
],
testURL: 'http://localhost',
transform: {
'^.+\\.vue$' : 'vue-jest',
'^.+\\.jsx?$' : 'babel-jest'
}
}
Run Code Online (Sandbox Code Playgroud)
和测试/Parent.test.js
import { mount } from '@vue/test-utils'
import Parent from './Parent.vue'
test('Mount', () => {
const wrapper = mount(Parent)
expect(wrapper.html()).toBe('')
})
Run Code Online (Sandbox Code Playgroud)
但是 npm run test:unit 错误是这样的
FAIL tests/Parent.test.js
? Test suite failed to run
TypeError: Cannot destructure property `config` of 'undefined' or 'null'.
at Object.getCacheKey (node_modules/vue-jest/lib/index.js:10:5)
at ScriptTransformer._getCacheKey (node_modules/@jest/transform/build/ScriptTransformer.js:280:41)
at ScriptTransformer._getFileCachePath (node_modules/@jest/transform/build/ScriptTransformer.js:351:27)
at ScriptTransformer.transformSource (node_modules/@jest/transform/build/ScriptTransformer.js:588:32)
at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:758:40)
at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:815:19)
Test Suites: 1 failed, 1 total
Tests: 0 total
Snapshots: 0 total
Time: 0.512 s
Ran all test suites.
Run Code Online (Sandbox Code Playgroud)
N'B*_*yev 18
该包正在放弃语义版本控制,以支持各种 Vue 版本(2.x、3.x)和 Jest 版本(26.x、27.x)。因此,如果您使用Vue 3.x和Jest 27.x,则需要安装vue3-jest,而不是vue-jest。
npm i vue3-jest -D
# or
yarn add vue3-jest --dev
Run Code Online (Sandbox Code Playgroud)
然后,jest.config.js按如下方式更新您的:
module.exports = {
moduleFileExtensions: ['vue', 'js', 'json', 'jsx'],
testEnvironment: 'jsdom',
transform: {
'^.+\\.vue$': 'vue3-jest',
'^.+\\js$': 'babel-jest',
},
}
Run Code Online (Sandbox Code Playgroud)
在撰写此答案时,包命名和版本控制如下所示:
您可以在此处阅读有关新命名和版本控制策略的更多信息。
在尝试让 Vue3、Jest 和 Typescript 一起工作时遇到了同样的问题。这就是我设法让它发挥作用的方法。这是一个将行星与依赖关系对齐的问题。
首先,我建议清除 package.json 中任何开玩笑提到的依赖项(特别是如果像我一样,您花几天时间尝试在拿着马蹄铁表演雨舞时放置和删除依赖项)。
添加到 package.json
"devDependencies": { "@babel/core": "^7.14.5", "@babel/preset-env": "^7.14.7", "babel-core": "^7.0.0-bridge.0", "typescript": "^4.3.5", "@vue/test-utils": "^2.0.0-rc.9", "jest": "^26.5.6", "ts-jest": "^26.5.6", "babel-jest": "^26.5.6", "vue-jest": "^5.0.0-alpha.10", "@vue/cli-plugin-unit-jest": "5.0.0-beta.2" }
(确保此依赖项具有相同的版本:jest、ts-jest 和 babel-jest)
仍然在 package.json 添加脚本"scripts": { "test": "jest" },
尼普我
npm 运行测试
对我来说它现在正在工作。希望它可以帮助别人。
小智 6
如果您使用的是 jest 的 27 版,请尝试降级到 26 版。确保将 babel-jest 和 ts-jest 也降级到 26 版。我收到以下错误,这对我来说是正确的:
无法解构 'undefined' 的属性 'config',因为它是未定义的。
| 归档时间: |
|
| 查看次数: |
1754 次 |
| 最近记录: |